必要なのは、pidこのプログラムを開始しているプロセスです。
fork関数のシグネチャは次のとおりです。
#include <unistd.h>
pid_t fork(void);
そしてそれは戻ります:
0子供の中で
the pid of the child親で
-1エラーが発生した場合
新しいプロセス(子)を作成する場合pidは、戻り値が。より大きいかどうかを確認する必要があります0。
あなたの例では:
pid_t pid = fork()
if (pid == 0) {
struct rlimit limits;
limits.rlim_cur = 10000000; // set data segment limit to 10MB
limits.rlim_max = 10000000; // make sure the child can't increase it again
setrlimit(RLIMIT_DATA, &limits);
execv(...);
}
else if (pid > 0) {
/* That's the value of the pid you are looking for */
}
これは紛らわしいかもしれませんが、fork()実行されると子プロセスが作成されるため、プログラムは2つに分割されます。そのため、pid値を確認し、子または親のどちらにいるかに応じて、必要な処理を実行する必要があります。