EN JA
SETPROCTITLE(3)
SETPROCTITLE(3) FreeBSD Library Functions Manual SETPROCTITLE(3)

名称

setproctitleプロセスのタイトルを設定する

書式

#include < sys/types.h>
#include < unistd.h>

void
setproctitle( const char *fmt, ...);

解説

setproctitle() ライブラリルーチンは、 ps(1) コマンドに現れるプロセスのタイトルを設定します。

タイトルは、実行形式の名前から設定され、 fmt 引数によって指定される引数の printf(3) スタイルの展開の結果が続きます。 fmt 引数が“-”文字で始まるなら、実行形式の名前は、スキップされます。

fmt が NULL であるなら、プロセスのタイトルは、元に戻されます。

そのアクティビティを示すためにデーモンでタイトルに設定するには、次の通りです:

setproctitle("talking to %s", inet_ntoa(addr));

規格

setproctitle() 関数は、暗黙的に非標準です。 argv[0] 文字列上のコピーを含む、 ps(1) コマンド行に変更を引き起こす他の方法も、また、暗黙的に移植性がありません。存在するなら、 setproctitle() を供給するオペレーティングシステムを使用することは望ましいことです。

まだ著者によってまだ見つかっていませんが、残念ながら、 setproctitle() の他のバージョンへの他の呼び出し規則がある可能性があります。これは、主たる規則であると考えられます。

実装は、 NetBSDBSD/OS を含む他のシステムとの互換性があると考えられます。

歴史

setproctitle() 関数は、 FreeBSD 2.2 ではじめて登場しました。他のオペレーティングシステムにも同様の関数があります。

作者

Peter Wemm <peter@FreeBSD.org>は、 Eric Allman <eric@sendmail.org>による Sendmail 8.7.3 のソースコードからアイデアを流用しました。

バグ

%s’を使用しないフォーマットとしてユーザによって供給されたデータで文字列を決して渡しません。攻撃者は、起こり得るセキュリティホールの原因となる、利用者のスタックをめちゃめちゃにするために文字列中にフォーマット記述子を入れることができます。結果の文字列が setproctitle() によって後で書き入れるためにユーザによって供給された変換記述子を含むように、文字列が snprintf() のような関数を使用して構築されたとしても、これは、有効です。

常に、適切な安全な様式を使用します:

setproctitle("%s", string);
December 16, 1995 FreeBSD