【发布时间】:2010-10-03 04:32:13
【问题描述】:
使用PHP的proc_open(),我可以启动一个进程,在进程运行时使用fread()一次从STDOUT和STDERR(分别)读取任意数量的字节,检测进程何时运行在STDOUT 和STDERR 管道上使用feof() 完成,然后使用proc_close() 获取进程的退出代码。我已经在 PHP 中完成了所有这些工作。它运行良好,并且给了我很多的控制权。
有没有办法在 Perl 中完成所有这些事情?总而言之,我需要能够做到以下几点:
- 启动外部进程
- 分别阅读
STDOUT和STDERR - 在进程运行时一次读取
STDOUT和STDERR任意数量的字节(即无需等待进程完成) - 检测进程何时结束
- 获取进程的退出码
提前感谢您的回答。
【问题讨论】:
-
我知道我可以像这样做大部分我想做的事情:system('command 2> stderr.txt > stdout.txt &');然后在进程运行时简单地读取文件,但是我想不出一种简单的方法来检测进程何时完成(不涉及解析“ps ...”输出或其他东西)或获取它退出代码。
标签: linux perl process stdout stderr