スレッド/ proc / PID / cmdlineを設定していますか?
-
02-07-2019 - |
質問
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;
より良いアイデアはありますか?
異なるスレッドで機能していますか?
所属していません StackOverflow