首页 > 解决方案 > 在子进程中禁止 printf

问题描述

我在 Linux 下的 C 语言中有一个 cmd 行应用程序,它必须运行另一个进程,问题是子进程在命令行中打印很多,整个应用程序变得混乱。

是否可以禁止子进程从父进程打印 cmd 行中的任何内容?例如,能够定义一个允许或禁止子进程打印的命令将非常有帮助。

标签: clinux

解决方案


历史悠久的传统是将输出重定向到位桶(a),如下所示:

system("runChild >/dev/null 2>&1");

或者,如果您是通过 执行此操作,只需使用和之间fork/exec重定向文件句柄。dup2forkexec

它不会阻止一个坚定的孩子输出到您的标准输出,但这样做必须非常棘手。


(a)我通常不喜欢这个,以防万一出现问题。我更愿意将它重定向到一个真实的文件,如果需要可以稍后检查(如果不需要,最终删除)。


推荐阅读