답변1
터미널 작업 제어와 관련하여 전경과 배경이 무엇을 의미하는지 잘못 이해하고 있습니다. 출력을 볼 수 있는지 여부에 의존하지 않습니다.
최종 장치(보다 구체적으로 라인 규율)에는 다음이 있습니다.포그라운드 프로세스 그룹 ID와 연관되다. 이는 라인 규율이 표준 모드에 있을 때 신호를 전송하고 신호에 매핑된 특수 문자 중 하나(라인 규율에 포함된 정보이기도 함)를 수신하는 프로세스 그룹을 결정합니다.
작업 제어 쉘은 쉘 작업을 구성하는 프로세스에 프로세스 그룹을 할당하고 이러한 프로세스 그룹과 자체 프로세스 그룹 사이에서 터미널 장치의 전경 프로세스 그룹을 전환하여 작업 제어를 수행합니다.
기본적으로 이는 이러한 프로세스의 터미널 출력에 영향을 주지 않습니다. 가지다단 하나tostop
이는 선 규칙에서 플래그를 켜는 경우 ( stty
또는 이러한 명령을 사용하여) 출력에 영향을 미칩니다. 간판에 불이 들어오네요기본값이 아님. (내가 아는 한 예외는 두 가지뿐입니다. 일부 운영 체제에서는 기본 초기 설정을 설정할 수 있지만진짜터미널(예:직렬 장치FreeBSD와 내 것;vc-reset-tty
도구는 "정상" 상태로 재설정할 때 이 플래그를 설정합니다. )
따라서 출력을 생성하는 셸 작업을 실행하는 경우~ 할 것이다쉘의 출력과 혼합됩니다.
개방형 대안은 tostop
여기서 도움이 되지 않습니다. 출력을 생성하는 셸 작업이 있습니다.계속해서. 분명히 출력 중대화형 진행 표시. 터미널 작업 제어가 잘 작동하지 않습니다지속적인 대화형 프로그램. (반대로 텍스트 편집기(예:) vi
및 텍스트 파일 뷰어(예:)more
계속해서인터렉티브. ) 선택 사항은 tostop
진행률 표시가 다른 프로세스의 진행률 표시와 혼합되는 끄기 또는 tostop
진행률 표시로 인해 진행률이 업데이트될 때마다 프로그램이 중지되는 켜기입니다.
또는 닫힌 손으로 두 터미널을 모두 사용하십시오.
추가 읽기
- 프로세스 그룹과 작업의 차이점은 무엇입니까?
- 작업과 프로세스의 차이점은 무엇입니까?
- 쉘의 프로세스 그룹 ID = 포그라운드 작업의 프로세스 그룹 ID?
- 터미널의 포그라운드 프로세스 그룹을 누가 변경했습니까?
- 터미널에서 보낸 모든 신호는 전경 프로세스 그룹으로 보내지나요?
- Bash에서 실행될 때 내 프로그램은 어떤 프로세스 그룹에 속합니까?
- Ctrl+C가 SIGINT 신호를 여러 프로세스에 보낼 수 있습니까?
- 하위 프로세스가 상위 프로세스와 다른 프로세스 그룹에 있습니까?
- SIGINT가 상위 프로세스로 전송될 때 하위 프로세스로 전파되지 않는 이유는 무엇입니까?
- 추상화, 세션, 세션 리더 및 프로세스 그룹의 목적은 무엇입니까?
- 제어 터미널의 목적은 무엇입니까?
- 배경, 좀비, 데몬 및 ctty - 이러한 개념이 관련되어 있습니까?
- … 그리고많은더.