Отправка Ctrl + C в strace приводит к сбою системного вызова записи целевого процесса с прерванным системным вызовом

Я делаю strace, используя time strace -p 54545 -fy 2>&1 | grep "xyz". Я ищу все системные вызовы, происходящие с файлом xyz.

Я убил strace, непрерывно нажимая Ctrl-C. Я видел сбой системного вызова write с ошибкой 4 в процессе 54545.

Я не посылаю никакого сигнала процессу 54545. Может ли это быть причиной strace?


person Anip Patel    schedule 28.09.2017    source источник


Ответы (1)


Чтобы отсоединить ваш процесс, ядро, по-видимому, ожидает точки, в которой оно сможет добраться до допустимого места в состоянии процесса в ядре, чтобы выполнить отсоединение. Write — это один из системных вызовов, который ядро ​​может прервать, если захочет. То есть процессы Unix должны обрабатывать EINTR из системного вызова записи, повторяя его. Таким образом, чтобы добраться до точки выполнения ядра, когда оно может обработать запрос на отсоединение, ядро ​​делает следующее:

person Sam Hartman    schedule 28.09.2017
comment
Это потому, что я постоянно нажимаю ctrl-C? - person Anip Patel; 29.09.2017
comment
Нет, просто не повезло - person Sam Hartman; 29.09.2017