답변1
"프로그램"이 무엇을 의미하는지에 따라 다릅니다.
첫째, 발췌한 영상의 내용은 오해의 소지가 있습니다.회의는 다음과 같이 시작되었습니다.일하다, 쉘 프로세스를 포함합니다."에서 설명했듯이작업과 프로세스의 차이점은 무엇입니까?그리고POSIX 작업 정의,ㅏ일하다 쉘 개념입니다. 따라서 실행 중인 셸은 다음에서 생성되지 않는 한 작업 자체가 아닙니다.상위 쉘 프로세스. 발췌에서 상위 프로세스는 다음과 같습니다.단말기그 중에는 에서 설명한 바와 같이배쉬 가이드는 반드시 쉘일 필요는 없는 텍스트 기반 인터페이스 프로그램을 실행하기 위한 그래픽 인터페이스 프로그램일 뿐입니다.
다음은 테이블을 설명하는 몇 가지 명령입니다.TTY 공개정확하다:
$ cat
hello
hello
^Z
[1]+ Stopped cat
$ cat | sort
^Z
$ jobs
[1]- Stopped cat
[2]+ Stopped cat | sort
cat
최종 출력에서 작업 두 개( 및 ) 가 있음을 확인할 수 있습니다. cat | sort
후자는 ls | sort
테이블에 해당합니다.
"bash에서 실행되는 프로그램이 새 작업에서 실행되는지 여부"에 대해서는 POSIX정의:
일하다
동일한 프로세스 그룹에 있는 셸 파이프 및 여기에서 파생된 모든 프로세스를 포함하는 프로세스 그룹입니다.
따라서 "셸 파이프를 포함하는 프로세스 집합"을 실행 중인 프로그램(프로그램이 실행될 명령 집합이라는 사실로 알 수 있음)으로 간주한다면 그렇습니다.
그러나 "프로그램"은 "쉘 파이프"보다 더 일반적인 개념이므로 bash에서 실행되는 프로그램은 일반적으로 새 작업에서 실행되지 않습니다. 예를 들어 cat
, 및 sort
도 프로그램이지만 각각 별도의 작업에서 실행되지는 않습니다.
반품,쉘 내장 함수"명령어 세트"이기 때문에 "프로그램"입니다. 그러나 이들은 셸 프로그램 자체에 포함된 구성 요소이므로 실행을 위해 반드시 별도의 하위 프로세스로 생성될 필요는 없습니다. 별도의 하위 프로세스에서 실행되지 않으면 셸 작업의 일부가 될 수 없습니다.
답변2
네, 그렇습니다. 뒤에 ^Z를 입력하여 셸에서 생성할 수 bg
있으며 자체 PID로 계속 실행됩니다.