4

私はデッドロック検出アルゴリズムに取り組んでおり、カーネルレベルのライブラリのみが提供されて#include <linux/somelibrary>います。getpid()と同様の現在のプロセスのpidを取得できるカーネルレベルの機能はありunistd.hますか?

4

2 に答える 2

4

この質問はほとんど意味がありません。

カーネルベースのコードを書いていますか? その場合、現在のタスクのタスク構造体 (pid を持つメンバーを含む) を指す "current" マクロを使用して、現在のタスクの pid を取得できます。これは、カーネルコードが「現在のタスク」が意味のあるコンテキスト (つまり、割り込み、タスクレットなどではない) で実行されている場合にのみ機能します。

ユーザー空間のコードを書いているのであれば、システム呼び出しを行う unistd.h (またはそれに含まれるもの) で定義された C ライブラリからのライブラリ呼び出しである getpid を呼び出せない理由はないはずです。そのような理由がある場合は、その理由を説明してください。

Linux でシステム コールを行うのは特に難しいことではありませんが、作成したくないアーキテクチャ固有のコードが含まれます。

于 2009-02-09T23:03:44.070 に答える