抑制“系统调用错误”消息

时间:2013-06-28 08:17:21

标签: c linux seccomp

正如here所述,使用seccomp过滤器,我们可以在运行example.c文件时阻止特定的系统调用。

该过程将终止并打印“系统调用错误”消息:

$ ./example
Bad system call

我想取消这条消息。

即使这样也无济于事:

$ ./example >/dev/null 2>/dev/null
Bad system call

2 个答案:

答案 0 :(得分:3)

第一步是了解Bad system call消息的来源。 shell的一个功能是告诉您导致进程死亡的信号。您的进程不会打印此消息,而是由您的shell打印。当shell执行程序时,它等待它使用waitpid系统调用完成。在status参数中描述了终止的原因,并且shell评估该字段并且友好地打印消息。类似地,当您手动终止从具有SIGKILL信号的shell启动的进程时,该shell将打印Killed

现在你已经想出了如何摆脱这条消息。您需要通过启动子shell并重定向其输出来重定向shell的输出。

答案 1 :(得分:0)

首先,你试图忽略一些你不应该忽视的东西。 “糟糕的系统调用”似乎是一个严重的失败。

但是,如果您必须忽略它,请尝试:

(./example) >/dev/null 2>/dev/null

我没有对此进行过测试,但是当简单>/dev/null 2>&1不起作用时,我看到了这种情况。

e.g。使用(some-command) >/dev/null 2>/dev/null,如果您kill -9这个命令,则不会打印屏幕上打印的killed消息。