-4

プロセスへの入力としてIDが与えられます。そのPIDまたはTIDを見つける必要があります。このIDは、同じプロセスでは必要のない任意のプロセスのものである可能性があります。例えば:

。\a.out1234

出力:そのスレッドID。

プログラムで同じ情報を取得する必要があります。私が行った場合

ps -elf | 1234 

指定されたIDのすべてのエントリが一覧表示されます。PIDとTIDが同じであるエントリはプロセスであり、それらが異なる場合はスレッドです。Cプログラムでも同じことをしたい

4

2 に答える 2

3

PIDとTIDはどちらも数値(識別子)です。どのように区別しますか?シングルスレッドコードでは、PIDとTIDの両方が同じです。

于 2012-10-23T10:06:08.987 に答える
0

最善の方法は、現在のスレッドまたはプロセスと照合することです。getpid() を使用して現在のプロセス ID を取得します。指定された pid と同じ場合、それは明らかにプロセス ID です。

pthread_self() は、現在のスレッドの ID を返します。

ただし、別のプロセスまたはスレッドに属することができる場合、これは役に立ちません。

これは、POSIX スレッドと fork プロセス API 用です。

編集: @Chris は、proc ファイル システムで他のプロセスとスレッド ID を調べることができると提案しました。ただし、特権アクセスが必要になる場合があります。詳細は質問の下のコメントで説明されています

于 2012-10-23T10:13:39.780 に答える