2014-02-25 2 views
0
int daemon() 
{ 
if (daemon(1, 1) < 0) /* Keep the same working directory and pipes */ 
{ 


      makeTimer("First Timer", &firstTimerID, 2, 2); //2ms 
      makeTimer("Second Timer", &secondTimerID, 10, 10); //10ms 
      makeTimer("Third Timer", &thirdTimerID, 100, 100); //100ms 
    return 1; 
       } 
    } 




int main() 
{ 
daemon(); 
} 


      return 0; 

     } 

타이머를 만들었고 타이머가 2ms, 10ms 및 100ms마다 작업을 호출합니다. 백그라운드에서 타이머를 실행하고 죽지 않아야합니다. 누구든지 리눅스 운영 체제에 대한 백그라운드에서 작업을 실행하기 위해 C 프로그램에서 아이디어를 제공 할 수 있습니까? 나는 다시 바닥에서 실행하려면이 세 가지 통화를 할 :c 프로그램을 백그라운드로 실행하고 절대로 종료하지 않습니까?

makeTimer("First Timer", &firstTimerID, 2, 2); //2ms 
    makeTimer("Second Timer", &secondTimerID, 10, 10); //10ms 
    makeTimer("Third Timer", &thirdTimerID, 100, 100); //100ms 

답변

2

unistd.h에서 C에서 daemon() 기능을 사용해보십시오. 터미널에서 몸을 분리하여 백그라운드에서 쉽게 실행할 수 있습니다.

그것은 당신의 main 기능

+0

대단히 감사합니다. 내 코드를 편집하고 백그라운드에서 세 가지 함수 호출을 실행하려고합니다. 그럼 어떻게 할 수 있는지 말해 줄 수 있니? – user3340661

+0

프로그램 시작시'main()'만'daemon()'함수를 호출했을 것입니다. 자세한 정보가 필요하면 설명서 페이지를 읽어보십시오. 이 함수는'fork()'를 호출하고 당신을 위해 당신의 I/O 파이프를 변경하고 당신을 부모 프로세스로부터 분리시킨다. –

+0

나는 진실을 말하고 있으며 내일까지 프로젝트를 제출해야합니다. 그래서 제발 도와 주실 수 있니? 그렇지 않으면 그들은 나를 잃을 것이다. – user3340661

0

에 당신은 nohup 명령을 사용하여 스크립트를 호출 할 수 있음을 넣어 간단

if (daemon(1, 1) < 0) /* Keep the same working directory and pipes */ 
{ 
    perror("daemon"); 
    return 1; 
} 

로하고있다. 다음과 같이 명령 행에서 스크립트를 실행하기 만하면됩니다. nohup <myscript>

그러나 실제로 cron 작업을 작성하는 것이 좋습니다. 리눅스 배포판에 대한 자세한 내용은 문서를 확인하십시오.

+0

'nohup'은 ssh를 통해 실행될 때 가장 좋습니다. 만약 OP가 단지 백그라운드'daemon'에서 돌아가고 싶다면 더 나은 선택입니다. –

관련 문제