В настоящее время я пишу серверный сервер для своей игры iOS. Сервер написан на C++ и скомпилирован & запущен на удаленном сервере Ubuntu. Я запустить сервер через SSH с помощьюПрограмма работает на переднем плане, но не в фоновом режиме, используя nohup
SUDO поЬир ./mygameserver &
на сервер связи написано в TCP. Основная функция с циклом чтения записывается с использованием стандартного C socket.h/netdb.h/in.h и использует select() для приема многих пользователей в неблокирующем гнезде для прослушивания.
Когда я запускаю сервер на переднем плане через SSH, все работает нормально. Он получает все пакеты, которые я отправляю в правильном порядке, и с правильной информацией заголовка. Когда я использую nohup и отключусь от SSH, однако ... Все, кажется, падает. Типичный журнал от пользователя подключиться, когда программное обеспечение сервер работает без SSH/в поЬир режиме выглядит следующим образом:
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, и сервер отправляет обновление MySQL каждые 10 секунд, чтобы избежать тайм-аутов.
Любые идеи или вводные данные о том, что здесь не так? Дайте мне знать, если вы хотите получить некоторые образцы кода, я просто не знаю, какие из них интересны для этой проблемы в частности. Заранее спасибо.
Но nohup «волшебным образом» изменяет FD stdout на файл nohup.out, насколько я знаю. По крайней мере, при запуске он печатает следующее: «nohup: игнорирование ввода и добавление вывода к« nohup.out »». Я получаю вывод в этом файле ... Я просто не получаю вывод, который я ожидаю. –
Возможно, вы захотите добавить больше протоколов. Кроме того, поскольку ваш вопрос сейчас, на самом деле нет способа рассказать, что может быть проблемой. Если вы не сузите его до определенного кода и не включите этот код в вопрос, мы не сможем вам помочь. –