2013-06-28 138 views
0

here所述,使用seccomp過濾器,我們可以在運行example.c文件時阻止特定的系統調用。抑制「Bad system call」消息

過程將終止,將印有「壞的系統調用」消息:

$ ./example 
Bad system call 

我想消息打壓。

即使這並沒有幫助:

+0

嘗試'./example&>/dev/null' –

+0

@DavidRF沒有工作。同樣的結果。 – Random

回答

3

第一步是瞭解Bad system call消息來自何處。這是你的shell的一個功能,告訴你什麼信號導致你的進程死亡。此消息不是由您的進程打印的,而是由您的shell打印的。當shell執行程序時,它會等待它完成使用waitpid系統調用。在status參數中描述了終止的原因,並且shell評估該字段並打印出消息。同樣,當您手動終止使用SIGKILL信號從外殼啓動的進程時,該外殼將打印Killed

現在你已經想通了如何擺脫消息。您需要通過啓動子shell並重定向其輸出來重定向shell的輸出。

0

首先,您要忽略的東西,你不應該忽視。 「壞系統調用」似乎是一個嚴重的失敗。

但是,如果你要忽略它,嘗試:

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

我沒有測試過這一點,但我已經看到了這方面的工作,當簡單>/dev/null 2>&1不起作用。

例如與(some-command) >/dev/null 2>/dev/null,如果你kill -9這個一些命令,屏幕上打印的killed消息不打印。

+0

沒有工作。我需要這樣做,因爲我的bash腳本打印的所有內容都被另一個腳本使用,我想壓制這條消息。現在我認爲最好只將想要的消息打印到文件並在第二個腳本中使用該文件。 – Random

+1

如果stdout中沒有該消息「Bad system call」,那麼我很難想象,這將使用任何方法進行記錄,並因此將傳遞給另一個腳本。除非你正在使用屏幕或類似命令進行一些操作。 – anishsane

+0

我把命令放在腳本'tester.sh'中。現在,當我運行'./tester.sh 2>/dev/null'時,該消息不會出現。 – Random