http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/%B5%A5%B8%F3(daemon)%20%C7%C1%B7%CE%B1%D7%B7%A5%BF%A1%20%B4%EB%C7%D1%20%C0%CC%C7%D8
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Code/C/makedaemon
실행은 -D 옵션을 주고 실행 시킨다.
1. 우선 fork 를 호출해서 자식프로세스를 생성시킨 다음 부모프로세스를 종료시킨다.
2. setsid 를 이용하여 새로운 세션을 만들고, 현재프로세스(자식)의 PID가 세션의 제어권을 가지도록 한다.
3. chdir 을 이용하여 프로세스가 루트디렉토리에서 작업을 수행하도록 변경시켜준다.
[code]
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <fcntl.h>
int main()
{
pid_t pid;
if (( pid = fork()) < 0)
exit(0);
// 부모프로세스를 종료한다.
else if(pid != 0)
exit(0);
// chdir("/"); // 생략 가능
// 여기에 프로그램 본체를 넣는다.
setsid();
while(1)
{
sleep(1);
}
}
[/code]
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Code/C/makedaemon
실행은 -D 옵션을 주고 실행 시킨다.
1. 우선 fork 를 호출해서 자식프로세스를 생성시킨 다음 부모프로세스를 종료시킨다.
2. setsid 를 이용하여 새로운 세션을 만들고, 현재프로세스(자식)의 PID가 세션의 제어권을 가지도록 한다.
3. chdir 을 이용하여 프로세스가 루트디렉토리에서 작업을 수행하도록 변경시켜준다.
[code]
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <fcntl.h>
int main()
{
pid_t pid;
if (( pid = fork()) < 0)
exit(0);
// 부모프로세스를 종료한다.
else if(pid != 0)
exit(0);
// chdir("/"); // 생략 가능
// 여기에 프로그램 본체를 넣는다.
setsid();
while(1)
{
sleep(1);
}
}
[/code]
'Linux' 카테고리의 다른 글
gstreamer, qt4 (0) | 2013.09.26 |
---|---|
사용자 루트 권한 주기 (0) | 2013.09.26 |
bash (0) | 2013.09.26 |
sysinfo, available memory size (0) | 2013.09.26 |
iconv (0) | 2013.09.26 |