将文件重定向到程序由execv()执行?

时间:2012-05-26 09:04:29

标签: c unix exec

我正在编写一个C程序,我在fork()中读取父文件中的文件并通过管道传递给子文件,然后在子文件中将文件从管道重定向到我想要执行的程序,

例如,如果我使用doc.txt执行/ bin / less,我将在parent中读取doc.txt并传递给child,然后使用从管道读取端接收的字符串执行less。 其他一切都没问题,除了execv()部分。

我已经阅读了execv()的手册页,但这并没有真正帮助...

任何帮助?

1 个答案:

答案 0 :(得分:0)

由于任何分叉的子代共享父文件描述符,您只需将stdin重定向到具有dup2()的文件描述符,然后在您的子进程中分叉并执行。

当子进程从stdin读取数据时,它将从您打开的文件描述符中读取(可能是doc.txt的描述符)。