ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
プロセスを識別するために使われる、一意の番号のこと。PID、プロセス識別子とも。以下、PIDとする。
pidを与えてプロセスの名前(psコマンドで出てくるname相当)を簡単に得る方法はない。
UNIXはそのようなAPIを用意していないため、汎用性の高い方法はない。
Linuxならばアプリケーションからprocfsにアクセスする方法が最も現実的で、PIDから名前を得る幾つかの方法は、次のとおりである。
この中で最も現実的なのはcmdlineから得る方法かと思われ、Linuxのpsコマンドや、Ubuntuなどの「システム・モニタ」といったソフトウェアは、この情報を表示しているようである。
実際の取得方法は、次の通り。あらかじめ、pid_t型の変数 pid に必要なPIDが入っているものとする。
char buf[32]; int fd; snprintf(buf, sizeof buf, "/proc/%d/cmdline", pid); fd = open(buf, O_RDONLY); *buf = '\0'; if (fd) { read(fd, buf, (sizeof buf) - 1); buf[(sizeof buf) - 1] = '\0'; close(fd); }
確保したbufのサイズに応じて名前が得られる。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます