이건 parent process가 누구냐의 문제이죠...
daemon의 경우엔 ppid = 1
background의 경우엔 ppid = current shell id 가 됩니다.
이러한 경우...
daemon은 강제로 죽이는 경우 외엔 죽지 않습니다.
그러나 background로 돌고 있는 process는 shell을 닫게 되면은...
같이 종료가 됩니다.
이건 parent process가 terminate 되기 때문입니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
nohup도 background로 돌아가게 됩니다.
그리고 nohup이 해주는 일은 특정 프로세스에게 SIGHUP signal을 무시하게하고... priority를 5상승 시켜주는 역활을 하게 됩니다.
그리고 SIGHUP은 session leader(SID와 PID가 같은 놈)가 종료를 하게 되면은 이 signal을 받게 되는데...
이 signal을 받으면 종료를 하게됩니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
이건 parent process가 누구냐의 문제이죠...
daemon의 경우엔 ppid = 1
background의 경우엔 ppid = current shell id 가 됩니다.
이러한 경우...
daemon은 강제로 죽이는 경우 외엔 죽지 않습니다.
그러나 background로 돌고 있는 process는 shell을 닫게 되면은...
같이 종료가 됩니다.
이건 parent process가 terminate 되기 때문입니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
오래된 쓰레드를 끄집어 내서 -_- 상당히 부담스러운데
지금 궁금한 점이 생겨서 이 쓰레드를 끌어 올립니다.
제가 확인한 바로는 스티븐스 아저씨 曰
1. 쉘이 command가 끝난것으로 생각하게 한다.
2. 새로운 프로세스 그룹의 리더가 된다.
-> setsid..
이렇게 두가지가 이루어 진다는건데..
이 두가지를 통해서 무엇을 이루고자 하는지 잘 모르겠습니다.
또한 인용된 글처럼 부모가 죽는다고 해서 백그라운드 프로세서가 죽는거 같아 보이진 않는 거 같습니다.
이건 parent process가 누구냐의 문제이죠...daemon의
이건 parent process가 누구냐의 문제이죠...
daemon의 경우엔 ppid = 1
background의 경우엔 ppid = current shell id 가 됩니다.
이러한 경우...
daemon은 강제로 죽이는 경우 외엔 죽지 않습니다.
그러나 background로 돌고 있는 process는 shell을 닫게 되면은...
같이 종료가 됩니다.
이건 parent process가 terminate 되기 때문입니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
답변 감사 드려요^-^
그런 차이점이 였군요..
그렇다면.. fork()함수를 사용해 순차적인 프로그램의 첫부분을 프로세서로 올리면..
그러니까.. IDS로 치자면 패킷캡쳐 부분을 프로세서로 올리면...
데몬으로 돌릴때와 같이 ppid가 1이 되니깐.. 쉘을 종료한다고 해도...
이것은 남아 있겠죠...
A함수를 올리면 이것이 부모가 되고, B,C,D라는 함수들이 자식이 되는거죠...
fork()함수에 대한 정확한 지식이 없는 관계로 이런 생각을 하여 질문을 해봅니다..
>> http://ragnarok.co.kr <<
라그온+ㅁ+ 댄서는 아직 죽지 않았다!!
=-=-=-=-=-=-=-=-=-=-=-
잠깐........ 그러면...
nohup 으로 돌리는건 백 그라운드로 돌리는건가요? 데몬으로 돌리는건가요?
보니까 데몬으로 돌아가는 느낌인데......
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
-D 옵션과 프로그램 자체를 데몬으로 작성하는 것에...
-D 옵션과 프로그램 자체를 데몬으로 작성하는 것에 차이가 있나요?
차이가 있다면 어떤 차이가 있는 걸까요?
daemonize
Stevens 아저씨의 그 유명한 책을 보면 daemonize 시키는 함수가 있습니다. 이 녀석이 어떤 일을 하는지 코드를 보신다면 한눈에 아하... 하실것 같은데요.
지금 어디서 긁어다가 붙이려고 하니 찾질 못하겠네요. 찾으시는 분이 좀 여기에 붙여주시면 감사하겠습니다. :)
Stevens 씨 daemon_init 함수...
Advacned Programming in the Unix Environment 책 418p 나와있습니다.
헤더 부분에서 ourhdr.h 는 Stevens 씨가 제작한 헤더입니다.
417 page를 보면 위의 과정에 대한 설명과 왜 그렇게 하는지에 대한 설명이 나와있습니다.
Dream, Passion and Challenge..
nohup도 background로 돌아가게 됩니다.그리고 nohup이
nohup도 background로 돌아가게 됩니다.
그리고 nohup이 해주는 일은 특정 프로세스에게 SIGHUP signal을 무시하게하고... priority를 5상승 시켜주는 역활을 하게 됩니다.
그리고 SIGHUP은 session leader(SID와 PID가 같은 놈)가 종료를 하게 되면은 이 signal을 받게 되는데...
이 signal을 받으면 종료를 하게됩니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
Re: -D 옵션과 프로그램 자체를 데몬으로 작성하는 것에...
-D는 단지 option일 뿐입니다.
daemon으로 돌리는...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
[quote="서지훈"]이건 parent process가 누구냐의 문제이
오래된 쓰레드를 끄집어 내서 -_- 상당히 부담스러운데
지금 궁금한 점이 생겨서 이 쓰레드를 끌어 올립니다.
제가 확인한 바로는 스티븐스 아저씨 曰
1. 쉘이 command가 끝난것으로 생각하게 한다.
2. 새로운 프로세스 그룹의 리더가 된다.
-> setsid..
이렇게 두가지가 이루어 진다는건데..
이 두가지를 통해서 무엇을 이루고자 하는지 잘 모르겠습니다.
또한 인용된 글처럼 부모가 죽는다고 해서 백그라운드 프로세서가 죽는거 같아 보이진 않는 거 같습니다.
C++, 그리고 C++....
죽어도 C++
댓글 달기