Итак, я написал небольшую многопоточную SMTP-программу. Проблема заключается в том, что каждый раз, когда я запускаю ее, она замораживает компьютер вскоре после этого. Похоже, что script работает, так как моя сетевая карта все еще загорается и письма получены, но в некоторых случаях она полностью блокируется и перестает отправлять письма.
Здесь ссылка на мои два файла script. Первый - это запуск программы:
Сначала вы используете popen
, который создает подпроцессы, т.е. обрабатывает не потоки. Я предполагаю, что это то, что вы имели в виду.
Я предполагаю, что программа застряла в цикле, где она непрерывно генерирует процессы, которые OS, вероятно, не понравится. (Это называется forkbomb, что является хорошим способом заморозить Linux, если только предел процесса не установлен с помощью ulimit
.) Я не мог найти ошибку, хотя, но если бы я был вами, я бы записывал сообщения каждый раз, когда я запускаю или убиваю подпроцесс, и если все в порядке, внимательно следите за системой (ps
или top
on Unix), чтобы убедиться, что процессы действительно убиты.
ulimit
для ограничения числа процессов ( ulimit -u
) для предотвращения сбоя.