C 在fork之后创建管道
这样做可能/正确吗?如果我从“子”进程的fd1[1]写入,那么是否可以从“父”进程的fd2[0]读取C 在fork之后创建管道,c,fork,pipe,C,Fork,Pipe,这样做可能/正确吗?如果我从“子”进程的fd1[1]写入,那么是否可以从“父”进程的fd2[0]读取 main(){ pid_t pid; pid=fork(); 如果(pid否,用于进程间通信的管道应该在fork()之前创建(否则,您没有简单的方法通过它们发送,因为读取和写入端应该由不同的进程使用) 在socket上以带外消息的形式在进程之间发送文件描述符有一些肮脏的技巧,但我真的忘记了细节,这些细节很难看您需要在分叉之前设置管道 int fds[2]; if (pipe(fds))
main(){
pid_t pid;
pid=fork();
如果(pid否,用于进程间通信的管道应该在fork()之前创建(否则,您没有简单的方法通过它们发送,因为读取和写入端应该由不同的进程使用)
在socket上以带外消息的形式在进程之间发送文件描述符有一些肮脏的技巧,但我真的忘记了细节,这些细节很难看您需要在分叉之前设置管道
int fds[2];
if (pipe(fds))
perror("pipe");
switch(fork()) {
case -1:
perror("fork");
break;
case 0:
if (close(fds[0])) /* Close read. */
perror("close");
/* What you write(2) to fds[1] will end up in the parent in fds[0]. */
break;
default:
if (close(fds[1])) /* Close write. */
perror("close");
/* The parent can read from fds[0]. */
break;
}
那你的问题是什么?我看起来不像是你无法测试自己的东西。
int fds[2];
if (pipe(fds))
perror("pipe");
switch(fork()) {
case -1:
perror("fork");
break;
case 0:
if (close(fds[0])) /* Close read. */
perror("close");
/* What you write(2) to fds[1] will end up in the parent in fds[0]. */
break;
default:
if (close(fds[1])) /* Close write. */
perror("close");
/* The parent can read from fds[0]. */
break;
}