SETPROCTITLE(3) | FreeBSD Library Functions Manual | SETPROCTITLE(3) |
名称
setproctitle — プロセスのタイトルを設定する解説
setproctitle() ライブラリルーチンは、 ps(1) コマンドに現れるプロセスのタイトルを設定します。タイトルは、実行形式の名前から設定され、 fmt 引数によって指定される引数の printf(3) スタイルの展開の結果が続きます。 fmt 引数が“-”文字で始まるなら、実行形式の名前は、スキップされます。
fmt が NULL であるなら、プロセスのタイトルは、元に戻されます。
例
そのアクティビティを示すためにデーモンでタイトルに設定するには、次の通りです:
setproctitle("talking to %s", inet_ntoa(addr));
規格
setproctitle() 関数は、暗黙的に非標準です。 argv[0] 文字列上のコピーを含む、 ps(1) コマンド行に変更を引き起こす他の方法も、また、暗黙的に移植性がありません。存在するなら、 setproctitle() を供給するオペレーティングシステムを使用することは望ましいことです。まだ著者によってまだ見つかっていませんが、残念ながら、 setproctitle() の他のバージョンへの他の呼び出し規則がある可能性があります。これは、主たる規則であると考えられます。
実装は、 NetBSD と BSD/OS を含む他のシステムとの互換性があると考えられます。
歴史
setproctitle() 関数は、 FreeBSD 2.2 ではじめて登場しました。他のオペレーティングシステムにも同様の関数があります。作者
<peter@FreeBSD.org>は、 <eric@sendmail.org>による Sendmail 8.7.3 のソースコードからアイデアを流用しました。バグ
‘%s
’を使用しないフォーマットとしてユーザによって供給されたデータで文字列を決して渡しません。攻撃者は、起こり得るセキュリティホールの原因となる、利用者のスタックをめちゃめちゃにするために文字列中にフォーマット記述子を入れることができます。結果の文字列が
setproctitle() によって後で書き入れるためにユーザによって供給された変換記述子を含むように、文字列が
snprintf() のような関数を使用して構築されたとしても、これは、有効です。
常に、適切な安全な様式を使用します:
setproctitle("%s", string);
December 16, 1995 | FreeBSD |