现在,我必须在C中启动一个外部进程。我目前正在使用posix_spawn创建该进程。我必须监视该过程是否已终止。我还需要链接到流程之外的标准。我看过使用popen,但是,它不提供获取pid的“简便”方法。我正在慢慢发疯,因为要获得Linux中正在运行的进程的标准可能并不那么困难。
另外,在进一步说明上,我需要帮助来理解file_actions参数的含义。关于此主题的posix_spawn的man(3)说:
如果file_actions不为NULL,则在子进程中打开的文件描述符应是在调用进程中打开的文件描述符,该文件描述符是由file_actions指向的派生文件操作对象以及派生文件操作之后剩余的每个打开的文件描述符的FD_CLOEXEC标志修改的已处理。
如果这不是一个惯用句的定义,我不知道这是什么。
由于您拥有PID(从返回posix_spawn
),并且您正在运行Linux,因此您可以在找到该进程的标准输出/proc/<pid>/fd/1
。只是open
(或fopen
)要读取的文件。
标准方法是使用fork
。使用pipe
和dup2
获取文件描述符,以读取孩子的输出,如本问题所述。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句