我正在编写一个C程序,我在fork()中读取父文件中的文件并通过管道传递给子文件,然后在子文件中将文件从管道重定向到我想要执行的程序,
例如,如果我使用doc.txt执行/ bin / less,我将在parent中读取doc.txt并传递给child,然后使用从管道读取端接收的字符串执行less。 其他一切都没问题,除了execv()部分。
我已经阅读了execv()的手册页,但这并没有真正帮助...
任何帮助?
答案 0 :(得分:0)
由于任何分叉的子代共享父文件描述符,您只需将stdin重定向到具有dup2()的文件描述符,然后在您的子进程中分叉并执行。
当子进程从stdin读取数据时,它将从您打开的文件描述符中读取(可能是doc.txt的描述符)。