我目前正在爲我的iOS遊戲編寫服務器後端。該服務器是用C++編寫的,編譯&在刪除Ubuntu服務器上運行。我通過SSH使用程序在前臺運行,但不能在後臺使用nohup
須藤nohup的./mygameserver &
服務器的通信是用TCP啓動服務器。讀循環的主要功能是使用標準C socket.h/netdb.h/in.h編寫的,並使用select()接受非阻塞偵聽套接字上的許多用戶。
當我通過SSH在前臺運行服務器時,一切似乎都正常工作。它會以正確的順序收到我發送的所有數據包,並收到正確的標題信息。但是,當我使用nohup並斷開連接時,SSH似乎都崩潰了。從用戶典型的日誌,當服務器軟件,不使用SSH連接運行/在nohup的模式是這樣的:
CONNECTED TO SQL
Server starting...
Second thread initialized
Entering order loop
Got a new message of type: 0
Got a new message of type: 0
Got a new message of type: 0
Got a new message of type: 0
<this line continues ad infinitum>
我真的不知道爲什麼。我已經確保每個打印都轉到nohup.out而不是std :: cout,並且服務器每隔10秒向MySQL發送一次更新以避免超時。
關於這裏有什麼問題的任何想法或意見?讓我知道如果你想要一些代碼示例,我只是不知道哪些對這個問題特別有意思。提前致謝。
但是,據我所知,nohup「神奇地」將stdout的FD更改爲nohup.out文件。至少它在運行時輸出以下內容:「nohup:忽略輸入並將輸出追加到'nohup.out'」。我確實得到了該文件中的輸出......我只是沒有得到我期望的輸出。 –
您可能想要添加更多日誌記錄。另外,現在你的問題是沒有辦法告訴可能是什麼問題。除非您將其縮小到某些特定的代碼,並且在問題中包含該代碼,否則我們無法爲您提供幫助。 –