오늘 S 팀장님이 npm 으로 실행되는 서브 프로그램들을 수행하는 작업을 진행하면서 서브 프로그램들이 종료되면서 npm 이 함께 종료되고 있다는 (이게 정상임) 얘기를 해주시면서 npm 으로 실행되는 서브 프로그램들이 child process 로 실행되는게 맞냐고 물어보셔서 관련 내용을 정리해본다.
우선 이 이야기는 다음과 같은 검색어로 구글링해보면 좀 더 다양한 논의들을 접할 수 있다.
참고 Orphan vs Zombie vs Daemon processes
ctrl+z
그리고 Job 콘트롤 명령을 통해 프로세스를 백그라운드로 넘길 수 있다.
명령을 실행할 때 &
를 추가해 명시적으로 백그라운드에서 실행한다.
위에서 본 disown
명령을 사용해 종료하지 않을 프로세스를 고아로 만든다. 즉, 현재 터미널 프로세스의 자식 프로세스가 아니라 init 프로세스의 자식으로 만든다. 터미널이 죽어도 해당 프로세스는 종료되지 않는다.
참고 How to Start Linux Command in Background and Detach Process in Terminal
Continuation Passing Style 지원 언어들은 그동안 스레드 기반 멀티 프로그래밍 환경에서 제공하는 스레드 콜스택 추적을 대신하여 어떤 방법을 사용하고 있는지 이야기를 나누었는데...
콘텍스트가 콜스택을 추적하기 위해서는 세션 아이디 같은 걸 계속 달고 다니는 방법 밖에 없다는 결론에 다다랐다.
컨커런트 프로그래밍의 세계는 참 오묘하다.
C 를 대체할 Zig 와 GC 가 필요하다면 Nim 정도 사용하고 싶다.