如here所述,使用seccomp过滤器,我们可以在运行example.c文件时阻止特定的系统调用。抑制“Bad system call”消息
过程将终止,将印有“坏的系统调用”消息:
$ ./example
Bad system call
我想消息打压。
即使这并没有帮助:
如here所述,使用seccomp过滤器,我们可以在运行example.c文件时阻止特定的系统调用。抑制“Bad system call”消息
过程将终止,将印有“坏的系统调用”消息:
$ ./example
Bad system call
我想消息打压。
即使这并没有帮助:
第一步是了解Bad system call
消息来自何处。这是你的shell的一个功能,告诉你什么信号导致你的进程死亡。此消息不是由您的进程打印的,而是由您的shell打印的。当shell执行程序时,它会等待它完成使用waitpid
系统调用。在status
参数中描述了终止的原因,并且shell评估该字段并打印出消息。同样,当您手动终止使用SIGKILL
信号从外壳启动的进程时,该外壳将打印Killed
。
现在你已经想通了如何摆脱消息。您需要通过启动子shell并重定向其输出来重定向shell的输出。
首先,您要忽略的东西,你不应该忽视。 “坏系统调用”似乎是一个严重的失败。
但是,如果你要忽略它,尝试:
(./example) >/dev/null 2>/dev/null
我没有测试过这一点,但我已经看到了这方面的工作,当简单>/dev/null 2>&1
不起作用。
例如与(some-command) >/dev/null 2>/dev/null
,如果你kill -9
这个一些命令,屏幕上打印的killed
消息不打印。
尝试'./example&>/dev/null' –
@DavidRF没有工作。同样的结果。 – Random