У нас есть сервисный процесс Linux, который порождает дочерний процесс с использованием fork, а затем запускает execelp для выполнения другой программы. Когда мы запускаем команду «kill -6 [child_pid]», это не имеет никакого эффекта. Эта же команда убьет дочернюю программу, если она будет запущена сама по себе, поэтому мы почти уверены, что сигнал обрабатывается системой в этом случае. Так почему же он не принимается дочерним процессом, когда он находится под контролем сервисного процесса? Любая помощь будет принята с благодарностью.
И это происходит в RedHat Linux и CentOS.
И размер файла ядра установлен неограниченным.
Также я хотел бы отметить, что та же команда работает с родительским процессом, поэтому мы знаем, что родительский объект не обрабатывает (игнорирует) SIGABRT. Родитель запускается сценарием оболочки (bash). Итак, при запуске команды "ps" я вижу pid сценария оболочки, родительский pid и дочерний pid. команда работает с родительским pid и сценарием оболочки pid.
И, насколько я понимаю, дочерний процесс наследует обработчики сигналов, а после execlp дочерняя программа - нет.