1

スレッドの所有者 (pthread ID を持つ) が root ユーザーか非 root ユーザーかを確認することはできますか? インターネットで検索したところ、所有者情報を直接取得する方法はないようです。(現在のスレッドでは、getuid() 呼び出しを使用できることはわかっています。しかし、他のスレッドの情報を取得することに関心があります)。

4

1 に答える 1

1

スレッドは、pthread_create() でスレッドを開始したコードと同じプロセスで実行されます。スレッドをプロセスや fork() などと混同しないでください。プログラムが関数の setuid() ファミリのいずれかを呼び出していない限り、それは main() とまったく同じである必要があります。

編集:以下の新しい情報に基づいています。

pthread_* インターフェイスを使用して、そのスレッドまたはルート ステータスについて別のプロセスに問い合わせる標準的な方法はありません。特定のプラットフォームでは、OS 固有のプロセス情報を調べてそのデータを取得することは可能かもしれませんが、移植可能な方法はありません。また、これを実行しているプラ​​ットフォームや、クロスプラットフォームで動作する必要があるかどうかについても言及していません。

IPC の他の方法を使用して、スレッド化されたアプリを照会し (それも変更できる場合)、root として実行されているかどうかを直接尋ねることができます。以下で説明する方法で質問に答えるには、スレッド化されたアプリを変更して、すべてのスレッド、tid などを追跡する必要があります。選択した IPC メカニズムが、サポートされているプラ​​ットフォームにも移植可能であることを確認する必要があります。

それでも、あるプロセスの pthread スレッド ID は、それ自体では別のプロセスにとってほとんど価値がありません。あなたが本当に達成しようとしていることについて慎重に考え、真の目標をカバーするのに十分な詳細を含む質問をする必要があります.

于 2013-03-14T18:27:23.180 に答える