- fork()
- 부모 프로세스는 exit()
- setsid()로 새로운 세션을 가진다. (예전 세션이나 pgid로 종료 signal을 받을 수 있기 때문)
- chdir()로 작업 디렉토리를 '/'로 바꾼다. (엉뚱한 데를 물고 있다 unmount할 때 문제를 만드는 수가 있다.)
- 부모로 부터 받은 fd를 모두 닫는다.
- 0,1,2 (in,out,err) I/O를 /dev/null에 연결한다.
이를 기반으로 daemon을 만들 수 있으나, 귀찮다. 그래서 daemon() 함수를 제공하고 있다.
#include <unistd.h>
int daemon(int nochdir, int noclose);
nochdir가 0이 아니면 dir path를 안바꾸고, noclose가 0이 아니면 fd를 안 닫는다.
No comments:
Post a Comment