gpt4 book ai didi

c - 从 C 中的管道传递的参数

转载 作者:行者123 更新时间:2023-11-30 18:04:57 26 4
gpt4 key购买 nike

我正在尝试通过管道和 execvp 传递 token ...但是我的问题是第一个和第二个子进程接收相同的 token ...如果有第三个或更多 token 该怎么办?

    int pipedes[2];
pipe(pipedes);

pid_t pid = fork();
if (pid == 0) {
dup2(filedes[1], 1);

execvp(argv[0], argv);
} else {
close(pipedes[1]);
}

pid = fork();
if (pid == 0) {
dup2(pipedes[0], 0);

execvp(arg[0], argv);
}

wait(&pid);

和 token

strtok(line, "|");

pipe(line);
while (1) {

line= strtok(NULL, "|");

pipe(line);
}

最佳答案

这一行:

pipe(line);

纯属无稽之谈。它创建两个新的文件描述符并用它们覆盖 line 的前 2 x sizeof(int) 字节。您的生产者进程应该将 token 写入标准输出,而您的消费者进程应该从标准输入读取它们。

顺便说一句,您的子进程似乎使用完全相同的参数执行与父进程相同的可执行文件。每个人如何知道自己是生产者还是消费者?

关于c - 从 C 中的管道传递的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7188670/

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