我有以下代码:
int main(int c, char** v)
{
int p[2], n;
char s[10] = "ceva";
pipe(p);
n = fork();
if(n == 0)
{
close(p[0]);
printf("Before\n");
if(c > 2)
execlp("grep","grep",v[1],v[2],NULL);
strcpy(s, "after");
write(p[1], s, 6);
close(p[1]);
exit(0);
}
close(p[1]);
read(p[0], s, 6);
close(p[0]);
printf("%s\n", s);
return 0;
}
使用./grep grep grep.c
运行代码时,我希望父进程在包含read(p[0], s, 6);
的行处阻塞,因为子进程不会在管道中写入任何内容,也不会关闭写入结束。
你能否指出我在哪里思考不正确?
非常感谢。