体に入れるのは何も残っていませんでした。
ベストアンサー1
プロセスには親プロセス(PPID)が必要です。カーネルは実際のプロセスではありませんが、少なくともinitなどのいくつかの実際のプロセスを直接作成し、それ自体がプロセスID 0を提供します。オペレーティングシステムによっては、ps
出力にプロセスとして表示される場合と表示されない場合がありますが、常にPPIDとして表示されます。
たとえば、Linuxの場合:
$ ps -ef|head
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:09 ? 00:00:00 /sbin/init
root 2 0 0 09:09 ? 00:00:00 [kthreadd]
root 3 2 0 09:09 ? 00:00:00 [ksoftirqd/0]
...
ソラリスの場合:
$ ps -ef|head
UID PID PPID C STIME TTY TIME CMD
root 0 0 0 Oct 19 ? 0:01 sched
root 5 0 0 Oct 19 ? 11:20 zpool-rpool1
root 1 0 0 Oct 19 ? 0:13 /sbin/init
root 2 0 0 Oct 19 ? 0:07 pageout
root 3 0 1 Oct 19 ? 117:10 fsflush
root 341 1 0 Oct 19 ? 0:15 /usr/lib/hal/hald --daemon=yes
root 9 1 0 Oct 19 ? 0:59 /lib/svc/bin/svc.startd
...
また、pid 0
(および-1
その問題のその他の負の値)は、それを使用する関数によって異なる意味を持ちます(たとえば、、kill
およびfork
)waitpid
。
最後に、init
プロセスは伝統的にpidとして提供されていますが、#1
オペレーティングシステムレベルの仮想化がSolarisゾーンのように使用されている場合は、もはやそうではありません。複数のプロセスをinit
実行できるからです。
$ ps -ef|head
UID PID PPID C STIME TTY TIME CMD
root 4733 3949 0 11:07:25 ? 0:26 /lib/svc/bin/svc.configd
root 4731 3949 0 11:07:24 ? 0:06 /lib/svc/bin/svc.startd
root 3949 3949 0 11:07:14 ? 0:00 zsched
daemon 4856 3949 0 11:07:46 ? 0:00 /lib/crypto/kcfd
root 4573 3949 0 11:07:23 ? 0:00 /usr/sbin/init
netcfg 4790 3949 0 11:07:34 ? 0:00 /lib/inet/netcfgd
root 4868 3949 0 11:07:48 ? 0:00 /usr/lib/pfexecd
root 4897 3949 0 11:07:51 ? 0:00 /usr/lib/utmpd
netadm 4980 3949 0 11:07:54 ? 0:01 /lib/inet/nwamd