이중포킹이란 무엇인가요?

이중포킹이란 무엇인가요?

쉘이 종료될 때 죽지 않는 프로세스를 어떻게 포크합니까?"이중 포크"에 대해 이야기합니다.

  • 이중 fork():

    (emacs &)
    

    중괄호 안의 명령은 ( )별도의 셸 프로세스에서 실행됩니다.

단순한 emacs &. 우선 서브셸 환경에서 실행하는 이유는 무엇입니까?

답변1

단순한 emacs &.

(emacs &)서브쉘을 실행한 다음 emacs &그 내부에서 실행됩니다. 즉 stdin, stdout, 및 가 stderr서브쉘에 대신 연결되어 있음을 의미합니다. 이중 포크가 되어 초기 쉘( (emacs &)실행된 위치)이 죽어도 살아남습니다. 실행만 하면 , 및 가 초기 셸에 연결되어 emacs &유지됩니다 .stdinstdoutstderr

emacsstdinGUI 버전은 , stdout및 가 손실된 것을 신경 쓰지 않기 때문에 실제로 이에 대한 나쁜 예입니다 stderr. 시도한 (ls -R / &); exit다음 grep하여 여전히 실행 중인지 확인할 수 있습니다. 보다 나은 예를 위한 편집을 환영합니다 ls.

우선 서브셸 환경에서 실행하는 이유는 무엇입니까?

초기 쉘에서 완전히 분리하려면(위 참조)

관련 정보