ls -l /proc/self | ls -l /proc/self | PIDの増加?

ls -l /proc/self | ls -l /proc/self | PIDの増加?

コマンドが実行されるたびに、リンクが指すls -l /proc/selfプロセスのPIDが増加します。なぜですか?コマンドのPIDですかls

答え1

はい、PIDは次のとおりですls

/プロセス/自己 このディレクトリは、/ procファイルシステムにアクセスするプロセスを意味し、同じプロセスのプロセスIDと呼ばれる/ procディレクトリと同じです。

(からman 5 proc)

/proc/self/proc/PIDファイルシステムの魔法を介してリンクのプロセスPIDにアクセスするシンボリックリンクproc

あなたの場合、プロセスはそのlsため、コマンドを実行するたびに異なるPIDを取得します(増加する傾向があります)。

答え2

はい、PIDですエルエス

POSIXは外部コマンドとして定義されているため、実行されるlsたびにlsシェルは新しいプロセスを作成し、そのlsプロセスで実行する必要があります。

これを行うには、シェルは次を呼び出します。実装する()システムコール:

$ strace ls -l /proc/self
execve("/bin/ls", ["ls", "-l", "/proc/self"], [/* 76 vars */]) = 0

新しいプロセスが作成された後は、/proc/selfそのプロセスのコンテキストに属するので、PIDはls

関連情報