Как избежать гонок с идентификаторами процессов при чтении /procLinux

Ответить Пред. темаСлед. тема
Anonymous
 Как избежать гонок с идентификаторами процессов при чтении /proc

Сообщение Anonymous »

Насколько я понимаю, в Linux идентификаторы процессов используются повторно, а также единственным API для многих вещей, связанных с процессами (например, поиска дочерних процессов определенного процесса), является /proc/
/...< /code>.
Но не означают ли эти два факта, что практически любой код, связанный с процессом, подвержен условиям гонки? Например, предположим, что я хочу убить всех своих детей. Насколько я знаю, единственный способ сделать это (псевдокод):

Код: Выделить всё

for pid in `/proc/*`:
if parse_parent_field(read(`/proc/$pid/stat`)) == my_pid():
kill(pid)
Однако это не означает, что между чтением файла и отправкой сигнала уничтожения существует промежуток, когда процесс в любом случае может завершиться, а новый может начаться с тем же PID, то есть вы случайно убить не тот процесс?
Может быть, в данном сценарии это очень маловероятно, но я уверен, что есть и другие, в которых это не так.
Как ты как следует с этим справляешься? Например, если вы оставите файл открытым в /proc/$pid, Linux не будет повторно использовать этот PID?

Подробнее здесь: https://stackoverflow.com/questions/787 ... ading-proc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»