我正在尝试使用管道将我的命令行参数从子进程发送到父进程,但无法弄清楚我做错了什么。我的代码如下。任何帮助表示赞赏。提前致谢。
int main(int argc, char argv[])
pid_t child;
int fd[2];
pipe(fd);
if((child = fork() == 0)
{
int len = strlen(argv[1]);
close(fd[0];
write(fd[1], argv[1], len);
exit(0);
}
else //Assuming process won't fail for now
{
char src[10]; //Just using 10 for now, no arguments have more than 10 characters
read(fd[0], src, (strlen(src)));
fprintf(stderr, "%s\n", src);
close(fd[0]);
}
}
最佳答案
你有一些小错误,但据我所知,不管你信不信,这可能是你真正的问题。
read(fd[0], src, (strlen(src)));
我的猜测是第一个字符为空,您成功读取了 0 个字节。
改为
read(fd[0], src, (sizeof(src)));
在你的大项目中,确保你在循环中读写。您不能保证读取或写入您指定的内容。
关于c - 通过管道发送 C 命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124434/