私の質問は単純明快です。ここでは、パイプの一方の端でデータを送信し、もう一方の端から読み取ろうとしています。IPC メカニズムを学習しようとしていますが、この単純なプログラムを実行中に行き詰まりました。親プロセスで print()[1] を使用しています。
o/p is
In the child process
IN the parent process and its sleeping
SUBI IS IN LOVE WITH PUTHALATH
しかし、親プロセスで write() [以下のプログラムでコメントされている 2] を使用している場合
o/p is
In the child process
IN the parent process and its sleeping
SUBI IS IN LOVE WITH PUTHALATHIN the parent process and its sleeping
「親プロセスとそのスリープ中」という行が2回印刷されたのはなぜですか?
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
int main(){
int fd[2];
pipe(fd);
if(!fork()){
printf("In the child process\n");
close(1);
dup(fd[1]);
close(fd[0]);
write(1,"SUBI IS IN LOVE WITH PUTHALATH", 200);
} else {
sleep(1);
printf("IN the parent process and its sleeping \n");
char* stream;
close(fd[1]);
read(fd[0],stream,200);
printf("%s",stream);------>(1)
// write(1,stream,200);---->(2)
}
return 0;
}
私はここで立ち往生しているので、助けてください。