Как открыть файл в возвышенном состоянии и выполнить с помощью python с помощью xargs

Завершение процесса, пока он находится в системном вызове, возможно, и в большинстве случаев это работает. Что сложно, так это заставить его работать все время. Переход от 99,99% к 100% — сложная часть.

Обычно при завершении процесса все используемые им ресурсы освобождаются. Если в процессе происходит какой-либо ввод-вывод, код, выполняющий этот ввод-вывод, получает уведомление и завершает работу, позволяя освободить используемые ресурсы.

Непрерывный сон происходит явно, когда «код уведомлен и он завершается» занимает -значительное количество времени. Это означает, что код не работает должным образом. Это ошибка. Да, теоретически можно написать код без ошибок, но практически невозможно.

Вы говорите, что «если ресурс возвращает ввод-вывод, его можно просто проигнорировать». Вот и славно. Но предположим, например, что периферийное устройство было запрограммировано на запись в память , принадлежащую процессу. Чтобы завершить процесс без отмены запроса к периферийному устройству, память должна каким-то образом использоваться. Вы не можете просто избавиться от этого ресурса. Есть ресурсы, которые должны остаться. И освобождение других ресурсов может быть выполнено только в том случае, если ядру известно, какие ресурсы безопасно освобождать, что требует, чтобы код был написан таким образом, чтобы его всегда можно было определить. Случаи, когда непрерывный сон длится в течение видимого промежутка времени, — это случаи, о которых невозможно сказать, и единственная безопасная вещь — это путь.

Можно разработать операционную систему, в которой уничтожение процесса гарантированно будет работать (при определенных предположениях о правильной работе оборудования ).Например, операционные системы жесткого реального времени гарантируют, что завершение процесса займет не более определенного фиксированного периода времени (, предполагая, что он вообще предлагает возможность уничтожения ). Но это сложно, особенно если операционная система также должна поддерживать широкий спектр периферийных устройств и обеспечивать хорошую производительность в стандартном -корпусе. Linux предпочитает обычное -поведение поведению в худшем -случае во многих отношениях.

Охватить все пути кода чрезвычайно сложно, особенно если для этого не существовало строгих рамок с самого первого дня. По большому счету неубиваемые процессы крайне редки (их не бывает ). Это признак глючных драйверов. При написании драйверов для Linux было приложено конечное количество усилий. Чтобы устранить больше случаев длительного непрерывного сна, либо потребуется больше людей для выполнения задачи, либо это приведет к менее поддерживаемому оборудованию и снижению производительности.

0
11.11.2018, 07:47
1 ответ

Ну, вы можете запустить первую команду в фоновом режиме, а затем выполнить вторую команду, например:

(subl script.py &); echo "script.py" | xargs python3

(subl script.py &);это откроет файл в фоновом режиме и

echo "script.py" | xargs python3это выполнит этот скрипт, и оба будут выполнены один за другим, и вам не нужно ждать завершения первой команды. Вторая команда будет выполняться, пока ваш файл будет открыт в возвышенном состоянии.

Вышеупомянутая команда использовала xargs, но если вы не хотите использовать xargs, вы также можете выполнить

subl script.py & python3 script.py

он также будет делать то же самое, и он короткий.

1
28.01.2020, 02:41

Теги

Похожие вопросы