gpt4 book ai didi

c - 如何将管道与一个 execve 结合起来

转载 作者:行者123 更新时间:2023-11-30 17:09:55 25 4
gpt4 key购买 nike

尝试响应程序的输出,这应该会收到答案,但它不起作用。这是我的代码:

int main() {

char *args[] = {"./a.out", 0};
int fd1[2], fd2[2];

if(pipe(fd1) == -1 || pipe(fd2) == -1) {
perror("error pipe\n");
return;
}

int pid = fork();
if (pid == 0) {
dup2(fd2[0], 0);
close(fd2[1]);

execve("./a.out", args, NULL);
} else {
dup2(fd1[0], 0);
close(fd1[0]);

write(fd2[1], "23", 2);
write(fd2[1], "A", 1);

int status;
wait(&status);
}

return 0;
}

提前致谢

最佳答案

最后,我的错误是在 write 中没有写换行符,因此没有完全读取调用的程序。

 int main() {

char *args[] = {"./a.out", 0};
int fd1[2];
if(pipe(fd1) == -1) {
perror("error pipe\n");
return;
}

int pid = fork();
if (pid == 0) {
dup2(fd1[0], 0);
close(fd1[0]);
close(fd1[1]);

execve("./a.out", args, NULL);
} else {

write(fd1[1], "5\n", 2);

int status;
wait(&status);
}

return 0;
}

关于c - 如何将管道与一个 execve 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33074278/

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