我确实有一个在HPUX和Linux上运行的C++程序。我的程序创建2个子进程,父进程等子进程完成。当我执行我的程序窗体运行目录时,如下所示, run> myProgram在父级以编程方式从子进程捕获打印,以便它们不会转到标准输出
我从显示的子进程+父进程中获取打印。所以我需要阻止我的子进程打印到命令提示符窗口。子进程完成后,我想打开打印,以便父级可以显示结果。
有谁知道如何打开和关闭打印?
我确实有一个在HPUX和Linux上运行的C++程序。我的程序创建2个子进程,父进程等子进程完成。当我执行我的程序窗体运行目录时,如下所示, run> myProgram在父级以编程方式从子进程捕获打印,以便它们不会转到标准输出
我从显示的子进程+父进程中获取打印。所以我需要阻止我的子进程打印到命令提示符窗口。子进程完成后,我想打开打印,以便父级可以显示结果。
有谁知道如何打开和关闭打印?
从this answer获得灵感:
#include <stdio.h>
main()
{
int fd;
fpos_t pos;
printf("printing to stdout enabled\n");
fflush(stdout);
fgetpos(stdout, &pos);
fd = dup(fileno(stdout));
// Standard output redirected to the null device
freopen("/dev/null", "w", stdout);
f();
// Standard output restored to its previous fd (the screen)
fflush(stdout);
dup2(fd, fileno(stdout));
close(fd);
clearerr(stdout);
fsetpos(stdout, &pos); /* for C9X */
printf("printing to stdout enabled again\n");
}
f()
{
printf("message sucked away by /dev/null");
}
如何你的孩子进程创建的?他们是来自你父母的分叉,还是他们是从系统命令产生的? – Dan 2011-04-25 20:56:06
你真的想打开和关闭stdout吗?你能不能简单地将它们重定向到类似文件的东西,然后在完成后读取它?或者那不是你想要的? – Bart 2011-04-25 21:03:12