子プロセス ブロックの親 pid 値と混同されました。私のプログラムは以下のとおりです。
int main(int argc, char *argv[])
{
pid_t pid;
pid=fork();
if(pid==-1){
perror("fork failure");
exit(EXIT_FAILURE);
}
else if(pid==0){
printf("pid in child=%d and parent=%d\n",getpid(),getppid());
}
else{
printf("pid in parent=%d and childid=%d\n",getpid(),pid);
}
exit(EXIT_SUCCESS);
}
出力: parent=2642 および childid=2643 の pid
child=2643 および parent=1 の pid
「高度な Unix プログラミング」では、子プロセスは getppid() 関数を使用して親プロセス ID を取得できると書かれています。しかし、ここでは「init」プロセス ID である「1」を取得しています。
子プロセス ブロックで親の pid 値を取得するにはどうすればよいですか。出力の取得を手伝ってください。
「Linux Mint OS」で実行しましたが、「WindRiver」OS ではこの問題は発生しません。このプログラムは OS によって動作が変わりますか?