У меня есть программа .NET (Edit: using MONO), назовите ее myfoo
которая находится на моем удаленном сервере Ubuntu. Чтобы получить доступ к нему, я SSH в мой ящик (используя Wi-Fi, а не Ethernet). Моя оболочка bash запускается как обычно, я перехожу в каталог, а затем запускаю программу через mono myfoo
. все это прекрасно работает.
К сожалению, у компании, где я работаю, есть некоторые довольно неприятные проблемы с Wi-Fi. Короткая версия заключается в том, что время от времени vpn вырубается, поэтому, пока мое устройство остается подключенным к Wi-Fi, все сетевое соединение разрывается с моим сервером.
Естественно, это заставляет мое устройство в конечном итоге понять, что соединение разорвано, и отображает традиционную ошибку разорванной трубы. Теперь вот проблема:
Когда я снова подключаюсь и снова запускаю myfoo, он не работает. Я отследил проблему до того факта, что при разрыве соединения bash не завершает предыдущий экземпляр myfoo. Я должен вручную убить предыдущий экземпляр перед запуском нового. По разным причинам это проблема. Я ожидал, что, когда связь разорвется, bash выйдет и, следовательно, убьет всех детей, которых он породил. Видимо, этого не происходит. Есть ли способ, которым я могу сделать это? Я бы предпочел не менять исходный код программы, но если мне нужно, чтобы перехватить прерывание или что-то, что я могу. Я бы предпочел, чтобы в настройках моего профиля bash было какое-то решение или что-то такое, что позволяло бы иметь такое поведение.