我目前正在为我的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'”。我确实得到了该文件中的输出......我只是没有得到我期望的输出。 –
您可能想要添加更多日志记录。另外,现在你的问题是没有办法告诉可能是什么问题。除非您将其缩小到某些特定的代码,并且在问题中包含该代码,否则我们无法为您提供帮助。 –