2016-12-16 62 views
0

我想获取进程的控制台日志,这是由父进程(program is coded in Qt)产生的。奇怪的是,stdout和stderror是管道。我应该如何查看控制台日志?Linux控制台日志进程与STDOUT作为管道

过程A(14543是A的PID) - >启动进程B(14552是B的PID)

我可以看到进程A的控制台日志

[email protected]:/$ ls -l /proc/14552/fd/ 
total 0 
lr-x------ 1 tux tux 64 Dec 16 11:17 0 -> pipe:[8968050] 
l-wx------ 1 tux tux 64 Dec 16 11:17 1 -> pipe:[8968051] 
l-wx------ 1 tux tux 64 Dec 16 11:15 2 -> pipe:[8968052] 

[email protected]:/$ ls -l/proc/14543/fd 

total 0 
lrwx------ 1 tux tux 64 Dec 16 11:25 0 -> /dev/pts/21 
lrwx------ 1 tux tux 64 Dec 16 11:25 1 -> /dev/pts/21 
lrwx------ 1 tux tux 64 Dec 16 11:15 2 -> /dev/pts/21 

回答

2

有什么问题QProcess()?您可以使用QProcess中运行一个子进程[阅读] /写入[STDERR/stdou]与正常的QIODevice stdout中读/ /写调用

这里是例子: read QProcess output to string

+0

问题不在于QProcess中,对于PID 14543 FD 1是/ dev/pts/21。问题出在第二个QProcess(PID 14552)FD 1是 - > pipe:[8968051]。我如何看到管道的输出? – Kamath

+1

管道是标准输出,它们已经由Qt处理了。你只需要调用QProcess :: readAllStandardOutput()或其他方法来读取标准输出 –