在C中重定向子进程的输入和输出
我想编写一个 ac 程序,在其中创建多个子进程并将它们的输入和输出重定向到不同的文件描述符。我用谷歌搜索了很多,但找不到相关结果。请帮忙。
I want to write a c program in which i create multiple child processes and redirect their inputs and outputs to different file descriptors .I googled a lot but couldn't find relevant results. Please help .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从 dup 开始。您确实需要更加努力地搜索。这方面有很多材料。
Start with dup. You really need to search a bit harder. There is plenty of material on this.
答案取决于您的操作系统。在类 UNIX 系统上,您可以使用 dup() 和 dup2() 来复制文件描述符;每个子进程在执行 exec 时都会从父进程继承当前的文件描述符集。因此,通常您
fork
子进程,将文件描述符0、1和2设置为您想要的任何内容,然后exec()
实际的子程序。The answer depends on your operating system. On UNIX-like systems, you use
dup()
anddup2()
to copy file descriptors around; each child process will inherit the current set of file descriptors from the parent when it isexec
-ed. So typically youfork
the child process, set file descriptors 0, 1, and 2 to whatever you want them to be, and thenexec()
the actual child program.我最喜欢的是 forkpty。此函数分叉一个子函数,并为您提供其标准输入/标准输出的文件描述符。你可以在fork之后使用exec,
My favorite is forkpty. This function forks a child and give you a file descriptor to its stdin/stdout. You can use exec after forking,