2014-02-25 111 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程序中運行Linux操作系統後臺任務的想法。 我想使這三個電話在回地面運行: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()功能。它使您可以輕鬆地將自己從終端上拆卸下來並在後臺運行。

它的那樣簡單

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

,只是把在你main功能

+0

非常感謝。我編輯了我的代碼,並希望在後臺運行三個函數調用。那麼你能告訴我怎麼做? – user3340661

+0

在你的程序開始時,大概你的'main()'只是調用'daemon()'函數。如果您需要更多信息,請閱讀手冊頁。該函數負責調用'fork()'併爲您更改I/O管道,並將您從父進程中分離出來。 –

+0

我說的是實話,必須在明天之前提交我的項目。所以你可以幫我嗎?否則他們會讓我失望。 – user3340661

0

你可以使用nohup命令調用腳本。只需在命令行上按如下方式運行腳本nohup <myscript>

但是,這可能是您真正想要創建cron作業的。檢查您的Linux發行版的文檔以瞭解更多信息。

+0

當通過ssh運行時,'nohup'是最好的。如果OP想要在後臺運行'daemon'是更好的選擇。 –