Jalankan beberapa arahan di sini dahulu:
Cetak ID proses log masuk (yang sentiasa wujud sehingga log masuk dan keluar)
george.guo@ls:~$ echo $PPID 3411 george.guo@ls:~$ ps -aux | grep 3411 george.+ 3411 0.0 0.0 99004 4520 ? S 11:00 0:00 sshd: george.guo@pts/46
Cetak proses shell yang dicabang oleh proses log masuk (sentiasa wujud sehingga log masuk dan keluar)
george.guo@ls:~$ echo $$ 3412 george.guo@ls:~$ ps -aux | grep 3412 george.+ 3412 0.5 0.0 21380 5120 pts/46 Ss 11:00 0:00 -bash
Seperti yang dapat dilihat daripada arahan di atas:
ID proses log masuk ialah 3411, yang mencipta subproses bash shell 3412. Pelaksanaan skrip masa hadapan,
3412 Kami memanggilnya shell utama di sini, yang akan memulakan proses subkulit untuk memproses skrip.
(Nota: Dalam bash, PID proses subkulit disimpan dalam pembolehubah khas '$$' dan PPID menyimpan ID proses induk subkulit.)
Mari kita tulis dua program kecil untuk mengesahkan:
george.guo@ls:~$ kucing ya.c
#include #include #include <sys/types.h> #include int main() { pid_t pid; pid_t ppid; pid = getpid(); ppid = getppid(); system("./test"); //system will fork a process for exec ./test printf("yes pid = %d, yes ppid = %d\n", pid, ppid); }
george.guo@ls:~$ ujian kucing
#!/bin/bash echo "PID of this script: $$" echo "test's PPID(system's fork id) = $PPID" echo "tests's pid = $$"
Hasil larian adalah seperti berikut:
george.guo@ls~$ ./yes
PID of this script: 6082 tests PPID(system's fork id)= 6081 echo tests self pid is 6082 yes PID = 6080, yes PPID = 3412
Dapat dilihat bahawa ID proses induk bagi proses yes ialah 3412, iaitu proses anak shell bash bagi fork proses log masuk dan shell utama. Ini kerana
ya dilaksanakan oleh shell utama. ya ID proses ialah 6080, sistem panggilan, fork dan ID subkulit ialah 6081.
Untuk panggilan sistem:
Menggunakan system() untuk menjalankan arahan memerlukan mencipta sekurang-kurangnya dua proses. Satu untuk menjalankan shell (di sini IDnya ialah 6081),
Satu lagi atau lebih digunakan untuk arahan yang dilaksanakan oleh shell (di sini adalah subkulit, iaitu ujian skrip itu sendiri).
ID proses ujian skrip itu sendiri ialah 6082.
Atas ialah kandungan terperinci Cangkang dan proses Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!