我正在编写一个 C 程序,其中我 fork() 读取父级中的文件并通过管道传递给子级,然后在子级中将文件从管道接收重定向到我要执行的程序,
例如,如果我使用 doc.txt 执行 /bin/less,我将读取父级中的 doc.txt 并传递给子级,然后使用从管道读取端接收的字符串执行 less。除了 execv() 部分,其他一切都很好。
我已经阅读了 execv() 的手册页,但它并没有真正帮助这样做......
有什么帮助吗?
由于任何分叉的孩子共享父文件描述符,您可以简单地将标准输入重定向到具有dup2()的文件描述符,然后只需在您的子进程中分叉并执行。
当子进程从标准输入读取数据时,它将从您打开的文件描述符(可能是您的 doc.txt 的描述符)中读取。