& # disown the functions
우리 모두 알고 있듯이 &
은 작업을 배경으로두고 가장 중요한 것은 작업을 중지합니다.bash에서 어떻게 구현되고 구현 되었습니까?
하지만 어떻게 이루어 집니까? (쉘을 일시 중단하는)을 &
없이
& # disown the functions
우리 모두 알고 있듯이 &
은 작업을 배경으로두고 가장 중요한 것은 작업을 중지합니다.bash에서 어떻게 구현되고 구현 되었습니까?
하지만 어떻게 이루어 집니까? (쉘을 일시 중단하는)을 &
없이
, 쉘 포크 자체가 작업을 시작하는 자식 프로세스에 execve
를 호출하고, 아이 wait
또는 waitpid
를 통해 대기 종료하기보다 다른 아무것도 없습니다.
백그라운드 작업을 시작할 때 쉘이 다시 포크하고 자식 프로세스에서 작업을 시작하기 위해 execve
을 호출하지만 종료를 기다리지 않고 작업 시작 직후에 컨트롤을 반환합니다.
Bash는 항상 포크가되지는 않습니다 : 때때로 execve는 directrly라고 불리며 때로는 명령이 실행되는 방법과 방법에 따라 내부적으로 실행되기도합니다. bash가 사용하는 execact 함수를 지정하는 것은 이상합니다. 다른 모든 것들은 그렇게 부정확합니다. 난 당신이 게시물을 업그레이 드하고 자식 프로세스의 표준 제어 및 stdin/stdout에 대해 뭔가를 추가하면 좋을 것이라고 생각하지만 이것은 모두 imho입니다. – XzKto
쉘이 외부 프로그램을 시작하는 일반적인 방법에 대해 말하고 있습니다. 물론 내장 명령을 실행하기 위해서 코드는 동일한 실행 파일에 있기 때문에 쉘은 fork와 exec를 수행 할 필요가 없습니다. –
모든 시스템에서 프로세스를 중단하지 않습니다. 리눅스에서는 FreeBSD가 그렇지 않습니다. 'disown' 함수를 보라. – wormsparty
아니요. 그러나'disown' 기능이 있는지보십시오. – wormsparty