質問

Linux / NPTL では、スレッドは何らかのプロセスとして作成されます。

プロセスの一部に奇妙なコマンドラインがあることがわかります:

cat /proc/5590/cmdline 
hald-addon-storage: polling /dev/scd0 (every 2 sec)

プロセスの各スレッドに対して、どのようにそれを行うことができるか考えていますか?これはデバッグに非常に役立ちます。

/ meがHALソースを調査中

ありがとう

役に立ちましたか?

解決

これを移植可能な方法(複数のUnixバリエーションで機能する方法)で行いたい場合、利用可能なオプションはほとんどありません。

あなたがしなければならないことは、呼び出し元プロセスが、プロセス出力に表示したい名前を指す argv [0] 引数と、実際の実行可能ファイル。

次を使用して、シェルからこの動作を試すことができます。

exec -a "This is my cute name" bash

これは、現在のbashプロセスを"これは私のかわいい名前です" という名前のプロセスに置き換えます。

Cでこれを行うには、 sendmail のソースコードまたは広範囲に移植された他のソフトウェアを見て、これをサポートするためにオペレーティングシステム全体で必要なすべてのバリエーションを見つけることができます。 。

一部のオペレーティングシステムには setproctitle(3) APIがあり、他の一部では argv [0] の内容をオーバーライドしてその結果を表示できます。

他のヒント

argv は、書き込み可能な文字列を指します。何かを書いてください:

#include <string.h>
#include <unistd.h>

int
main(int argc, char** argv)
{
    strcpy(argv[0], "Hello, world!");
    sleep(10);
    return 0;
}

バー..コードはそれほど良くありません。トリックは、環境(ここではargv_buffer)ポインターを再利用することです:

memset (argv_buffer[0] + len, 0, argv_size - len);
argv_buffer[1] = NULL;

より良いアイデアはありますか?

異なるスレッドで機能していますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top