Bash에서 실행될 때 내 프로그램은 어떤 프로세스 그룹에 속합니까?

Bash에서 실행될 때 내 프로그램은 어떤 프로세스 그룹에 속합니까?

프로그램을 처음부터 실행한다면 bash내 프로그램은 쉘과 동일한 프로세스 그룹에 속합니까, 아니면 새로운 프로세스 그룹에 속합니까?

쉘을 만들 때, 신호를 처리해야 합니다 SIGINT.

이제 Ctrl+는 포그라운드에 있지만 동일한 프로세스 그룹에 속한 프로세스에 신호를 보냅니다 C.SIGINT

Bash 세션을 종료할 수 없습니다.

답변1

bash-4.3$ ps -j | cat
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4600  4600  4586 pts/1    00:00:00 ps
 4601  4600  4586 pts/1    00:00:00 cat
bash-4.3$ ps -j; ps -j
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4602  4602  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4603  4603  4586 pts/1    00:00:00 ps

대화형 쉘일하다이는 프로세스 그룹을 통해 달성됩니다. 대화형 셸 작업을 실행하기 위해 프로세스 그룹이 생성됩니다. 대화형 셸은 프로세스 그룹과 실제로 혼합되는 유일한 명령입니다.

위는 ps -j | cat(프론트) 업무입니다. 둘 pscat동일한 프로세스 그룹에 있으면 쉘은 이를 터미널의 전경 프로세스 그룹으로 만들고 ^CSIGINT를 이들에게 보냅니다.

두 번째 예에는 두 개의 연속된 작업이 있습니다.

존재하다

bash-4.3$ (ps -j; ps -j)
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4634  4633  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4635  4633  4586 pts/1    00:00:00 ps

서브 쉘은 직업입니다. 서브쉘 자체는 비대화형 쉘로 간주될 수 있습니다.

관련 정보