Если ваш монитор запускает процессы с fork
, он должен получать SIGCHLD
сигналы, тогда вызовите waitpid (2). AFAIK waitpid
сообщит вам, когда core
сброс будет завершен (и не вернется успешно до этого)
См. Также core (5)
Возможно, используя возможности inotify (7) в каталоге, содержащем core
дамп может помочь.
И systemd тоже может быть актуальным (подробностей я не знаю)
Кстати, во время дампа ядра я считаю, что статус процесса (как сообщается через proc (5) в 3 поле rd из /proc/$PID/stat
) равно
D Waiting in uninterruptible disk sleep
Так что, если вас беспокоит долгое core
время дампа, вы можете, например, каждые полсекунды зацикливаться на fopen
, затем fscanf
, затем fclose
этот /proc/$PID/stat
псевдо-файл, пока статус не перестанет D
Наконец, дампы ядра обычно бывают быстрыми (если только вы не запускаете суперкомпьютер с терабайтом ОЗУ) в наши дни (в Linux с хорошей файловой системой, такой как Ext4 или BTRFS), потому что я считаю, что (если у вас достаточно ОЗУ) файл дампа ядра остается в кеше страниц. Отвалы ядра продолжительностью полчаса были обычным явлением в прошлом веке на суперкомпьютерах (Cray) того времени.
Конечно, вы также можете stat (2) core
файл.
См. Также http://www.linuxatemyram.com/
person
Basile Starynkevitch
schedule
06.02.2015
fork
? - person Basile Starynkevitch   schedule 06.02.2015