먼저 여기에서 몇 가지 명령을 실행하세요:
로그인 프로세스의 ID를 인쇄하세요(로그인하고 종료할 때까지 항상 존재함)
으아아아로그인 프로세스에 의해 분기된 셸 프로세스를 인쇄합니다(로그인하고 종료할 때까지 항상 존재함)
으아아아위 명령에서 볼 수 있듯이:
로그인 프로세스 ID는 3411이며, 이는 bash 쉘 하위 프로세스 3412를 생성합니다. 향후 스크립트 실행,
3412 여기서는 이를 메인 셸이라고 부르는데, 이는 스크립트를 처리하기 위한 하위 셸 프로세스를 시작합니다.
(참고: bash에서는 서브쉘 프로세스의 PID가 특수 변수 '$$'에 저장되고, PPID는 서브쉘의 상위 프로세스 ID를 저장합니다.)
검증을 위해 두 개의 작은 프로그램을 작성해 봅시다:
george.guo@ls:~$ 고양이 yes.c
으아아아george.guo@ls:~$ 고양이 테스트
으아아아실행 결과는 다음과 같습니다.
george.guo@ls~$ ./yes
으아아아yes 프로세스의 상위 프로세스 ID가 3412임을 알 수 있는데, 이는 로그인 프로세스 포크와 메인 쉘의 bash 쉘 하위 프로세스입니다. 그 이유는
yes는 메인 쉘에 의해 실행됩니다. 예 프로세스 ID는 6080, 호출 시스템, 포크 및 하위 쉘 ID는 6081입니다.
시스템 호출의 경우:
system()을 사용하여 명령을 실행하려면 최소한 두 개의 프로세스를 만들어야 합니다. 셸 실행을 위한 하나(여기서 ID는 6081),
다른 하나 이상은 셸에서 실행되는 명령에 사용됩니다(여기에는 스크립트 테스트 자체인 하위 셸이 있습니다).
스크립트 테스트 자체의 프로세스 ID는 6082입니다.
위 내용은 Linux 셸 및 프로세스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!