Я написал программу, которая может работать в течение 16 или 20 часов на Linux-коробке с некоторой разновидностью RedHat OS. Он работает нормально, если я запускаю его с nohup или перенаправляю вывод в файл, но когда пользователь запускает его, отправляет в фоновый режим и выходит из системы, произойдет сбой при попытке отправить простое сообщение о состоянии (сообщив номер файлов, которые привели к файлу). Выдает исключение, предположительно, потому что поток больше не действителен.
Как только мы поняли, почему это работает для меня, а не для него, я провел несколько тестов и обнаружил, что ruby уникален в этом поведении по сравнению с Python, Bash и perl.
Есть ли веская причина, по которой ruby ведет себя не так, как другие языки сценариев в этой ситуации? Есть ли способ изменить его, чтобы он вел себя как остальные?
Я почти уверен, что C ++ (и C) не волнует, увидит ли конечный пользователь вывод своих сообщений, но я не написал тест для этих языков. Я был удивлен, узнав, что задания, отправленные на задний план, не исчезли, как только вы вышли из системы! Так что я, конечно, никогда не проверял это поведение в прошлом.