当前位置: 技术问答>求解:父进程如何知道子进程core dump?
iis7站长之家
求解!关于如何获取系统中其它进程的标准输出
来源: 互联网 发布时间:2016-07-12
本文导语: 本帖最后由 bzerg007 于 2009-10-27 10:14:52 编辑 Google了很长时间一直没有答案,故来这里发帖求解! 请问各位高手,如何在我的程序中获取系统在后台运行的其它进程的标准输出呢? 希望各位不吝赐教 | ...
请问各位高手,如何在我的程序中获取系统在后台运行的其它进程的标准输出呢?
希望各位不吝赐教
|
我猜 楼主的意思是说 , arm_server 进程已经启动的了,默认标准输出是到查串口设备上。这时候又想启动另外已经进程来去获取 arm_server 的标准输出。
这样看看只能 用ptrace 函数,用PTRACE_ATTACH 参数attach 一下 arm_server 进程 这个进程,然后就可以通过dup函数,把标准输出定向到想要的文件里面去。然后不需要的时候再PTRACE_DETACH 就可以了。
不过这种办法我怀疑会影响 arm_server 的性能的吧。
不过可以竟然 arm_server 都是自己写的了,可以考虑在arm_server 中留一个接口。然后需要获得arm_server 的输出的时候,监控进程通知 一下arm_server 进程,arm_server 再进程自己调用dup 函数把 标准输出重新定下到一个FIFO管道中了,监控进程就可以通过FIFO管道 得到arm_server的标准输出了。 这样作估计比上面那种好吧。 楼主了解一下进程通讯和管道就可以做了。
如果只是为了简单记录一下 arm_server 的log,那其实 用tee 命令 也是可以 ,启动arm_server的命令改为 ./arm_server | tee logfile.txt 这样就可以了吧, arm_server 的输出会同时打印到 标准输出和 logfile.txt文件里面的。
这样看看只能 用ptrace 函数,用PTRACE_ATTACH 参数attach 一下 arm_server 进程 这个进程,然后就可以通过dup函数,把标准输出定向到想要的文件里面去。然后不需要的时候再PTRACE_DETACH 就可以了。
不过这种办法我怀疑会影响 arm_server 的性能的吧。
不过可以竟然 arm_server 都是自己写的了,可以考虑在arm_server 中留一个接口。然后需要获得arm_server 的输出的时候,监控进程通知 一下arm_server 进程,arm_server 再进程自己调用dup 函数把 标准输出重新定下到一个FIFO管道中了,监控进程就可以通过FIFO管道 得到arm_server的标准输出了。 这样作估计比上面那种好吧。 楼主了解一下进程通讯和管道就可以做了。
如果只是为了简单记录一下 arm_server 的log,那其实 用tee 命令 也是可以 ,启动arm_server的命令改为 ./arm_server | tee logfile.txt 这样就可以了吧, arm_server 的输出会同时打印到 标准输出和 logfile.txt文件里面的。
|
用dup重定向标准输出到串口或网络或文件