Отправка Ctrl+C для связывания приводит к сбою системного вызова записи целевого процесса с "прерванным системным вызовом"
Я делаю с помощью Strace time strace -p 54545 -fy 2>&1 | grep "xyz"
, Я ищу все системные вызовы, происходящие с файлом xyz
,
Я убил Стрейса, непрерывно нажимая Ctrl-C. я увидел write
сбой системного вызова с ошибкой 4 в процессе 54545.
Я не посылаю никаких сигналов процессу 54545. Может ли это быть вызвано strace?
1 ответ
Чтобы отсоединить ваш процесс, ядро, очевидно, ожидает точку, в которой оно может добраться до допустимого места в состоянии ядра процесса для выполнения отсоединения. Запись - это один из системных вызовов, которые ядро может прервать, если захочет. То есть процессы Unix должны обрабатывать EINTR из системного вызова write, повторяя его. Таким образом, чтобы добраться до точки выполнения ядра, где он может обработать запрос на отключение, ядро решает сделать это