c - 在子进程中禁止 printf
问题描述
我在 Linux 下的 C 语言中有一个 cmd 行应用程序,它必须运行另一个进程,问题是子进程在命令行中打印很多,整个应用程序变得混乱。
是否可以禁止子进程从父进程打印 cmd 行中的任何内容?例如,能够定义一个允许或禁止子进程打印的命令将非常有帮助。
解决方案
历史悠久的传统是将输出重定向到位桶(a),如下所示:
system("runChild >/dev/null 2>&1");
或者,如果您是通过 执行此操作,只需使用和之间fork/exec
重定向文件句柄。dup2
fork
exec
它不会阻止一个坚定的孩子输出到您的标准输出,但这样做必须非常棘手。
(a)我通常不喜欢这个,以防万一出现问题。我更愿意将它重定向到一个真实的文件,如果需要可以稍后检查(如果不需要,最终删除)。
推荐阅读
- xamarin - Xamarin 使用 CrossSimpleAudioPlayer 播放声音
- linux - FusionPBX安装502 Bad Gateway
- wordpress - 如何更改 woocommerce 描述标签名称
- blockchain - 如何使用 Waves IDE 为资产设置脚本?
- ios - 如何在使用 ESTabBarController 执行操作时推送控制器
- javascript - 如何使构造函数原型可枚举?
- python - Amazon S3:提取大型二进制文件部分的快速方法?
- wpf - 在 WPF 中加载的控件上显示焦点元素
- node.js - 如何在数据库中已定义表时使用 ORM?
- batch-file - 在 setlocal 环境中设置全局环境变量