hereで説明されているように、seccomp フィルターを使用すると、example.c ファイルの実行時に特定のシステム コールをブロックできます。
プロセスが終了し、「Bad system call」メッセージが出力されます。
$ ./example
Bad system call
メッセージを抑制したい。
これでも役に立ちませんでした:
$ ./example >/dev/null 2>/dev/null
Bad system call
Bad system call
最初のステップは、メッセージがどこから来たのかを理解することです。プロセスが停止した原因となったシグナルを通知するのは、シェルの機能です。このメッセージはプロセスではなく、シェルによって出力されます。シェルがプログラムを実行すると、waitpid
システム コールの使用が終了するのを待ちます。パラメータにはstatus
終了の理由が記述されており、シェルはそのフィールドを評価し、親切にメッセージを出力します。同様に、シグナルを使用してシェルから起動されたプロセスを手動で強制終了するとSIGKILL
、そのシェルはKilled
.
これで、メッセージを取り除く方法をすでに理解できました。サブシェルを開始してその出力をリダイレクトすることにより、シェルの出力をリダイレクトする必要があります。
まず、無視してはいけないものを無視しようとしています。「悪いシステムコール」は重大な失敗のようです。
ただし、無視する必要がある場合は、次を試してください。
(./example) >/dev/null 2>/dev/null
私はこれをテストしていませんが、単純に機能しない場合に、これが機能するのを見てきました>/dev/null 2>&1
。
たとえば、(some-command) >/dev/null 2>/dev/null
このkill -9
何らかのコマンドを使用すると、killed
画面に表示されるメッセージは表示されません。