我需要运行一个 Linux 命令并从 C 语言中获取其 stdout 输出。
我可以使用 pipe() 创建一个管道,然后进行 fork/exec,在调用 exec() 之前将子进程的 stdout 描述符重定向到管道中,并在父进程中从管道中读取。此外,我还需要等待子进程完成。
是否有一种简单的调用方式来执行 fork + 重定向 + exec + 等待,就像 system() 执行 fork + exec + wait 一样,只是 system() 不进行重定向。
有 popen() 函数,它执行 fork + 重定向 + exec,但不进行等待,所以无法获取退出状态。
我可以使用 pipe() 创建一个管道,然后进行 fork/exec,在调用 exec() 之前将子进程的 stdout 描述符重定向到管道中,并在父进程中从管道中读取。此外,我还需要等待子进程完成。
是否有一种简单的调用方式来执行 fork + 重定向 + exec + 等待,就像 system() 执行 fork + exec + wait 一样,只是 system() 不进行重定向。
有 popen() 函数,它执行 fork + 重定向 + exec,但不进行等待,所以无法获取退出状态。