次の点で問題があります
。パイプを関数内の子ノードに送信しようとしていて、子ノードに書き込みをさせようとしています。
次のコード部分はそれをよりよく説明します:
int p[2];
int i;
pipe(p);
close(p[1]);
if(fork1() == 0){
close(p[0]);
runcmd(parsecmd(buf),p);
}
wait(0);
}
while(read(p[0],&i,sizeof(int)) != 0){
printf(1," id: %d\n",i );}
runcmd には次のコードが含まれます。
...
void runcmd(struct cmd *cmd,int pp[]){
int j = getpid();
write(pp[1],&j,sizeof(int));
close(pp[1]);
...
悲しいことに、予想される結果は次のようになるはずです-親はIDを出力します(getpidは現在実行中のプロセスIDを返す関数です)が、呼び出されても何も出力されません。私は何を間違えましたか?