1

我确实有一个在 HPUX 和 Linux 上运行的 C++ 程序。我的程序创建了 2 个子进程,父进程等待两个子进程完成。当我如下执行我的程序表单运行目录时,运行> myProgram

我从显示的子进程 + 父进程中获得打印。所以我需要停止我的子进程打印到命令提示符窗口。子进程完成后,我想打开打印,以便父进程显示结果。

有谁知道如何打开和关闭打印?

4

1 回答 1

1

这个答案中汲取灵感:

#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");
}
于 2011-04-25T21:08:41.823 回答