2010-01-01 48 views
1

我已經寫了寫單詞「垮掉」,以文件的守護進程,隨訪15秒間隔的當前日期和時間。然而,每一個我檢查輸出文件時,守護進程會出現這樣被輸出兩次:守護程序編寫C輸出到文件,而不是一次兩次++

拍:星期五1月1日18時09分01秒2010

拍:星期五1月1日18:09: 01 2010

,它應該只對條目。 整個代碼位於http://pastebin.com/m27a81981(我不想在這裏粘貼爲整個事情是有點長。)。 寫入文件的功能是

get_time(); 
ofstream outputFile("heart.txt", ios::app); 
beat = "\nBeat: " + gtime + "\n"; 
outputFile << beat; 
outputFile.close(); 

在此先感謝。

+0

您確定沒有運行兩個副本嗎?你如何啓動這件事? – bmargulies 2010-01-01 23:30:04

+0

...看起來我有兩個副本運行> _ <。我使用「sudo ./daemon」運行它。 – Galileo 2010-01-01 23:32:50

回答

5

這是因爲您在開始時fork(),創建守護進程的兩個正在運行的實例...

+0

如何結束與終端關聯的第一個實例? – Galileo 2010-01-01 23:33:28

+1

檢查叉的返回值() - 它會返回一個true和false爲其他(我認爲)。所以:'if(fork())return;'或'if(!fork())return;'我的linux很生鏽。 – 2010-01-01 23:34:11

+0

檢查「分支()」的返回值 – 2010-01-01 23:34:49