gpt4 book ai didi

c - 错误的文件描述符

转载 作者:行者123 更新时间:2023-11-30 16:04:46 25 4
gpt4 key购买 nike

有人看到这个问题吗,它不起作用,说文件描述符错误,不知道为什么?

pipe(pipefd[0]);
if ((opid = fork()) == 0) {
dup2(pipefd[0][1],1);/*send to output*/
close(pipefd[0][0]);
close(pipefd[0][1]);
execlp("ls","ls","-al",NULL);
}

if((cpid = fork())==0){
dup2(pipefd[0][1],0);/*read from input*/
close(pipefd[0][0]);
close(pipefd[1][1]);
execlp("grep","grep",".bak",NULL);
}

close(pipefd[0][0]);
close(pipefd[0][1]);

最佳答案

根据您的代码,我猜测 pipelinefd 定义为:

int pipefd[2][2];

现在,当你这样做时:

pipe(pipefd[0])

这只填充pipefd[0][0]pipefd[0][1]

所以当你这样做时:

# Bad descriptor
close(pipefd[1][1]);

您正在引用随机垃圾(您从未设置pipefd[1][0]pipefd[1][1])。

从显示的代码中,我不明白你为什么不这样做:

int pipefd[2];
pipe(pipefd);

关于c - 错误的文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2597213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com