Флаг процесса 1: разветвлен, но не выполнялся (вариант использования?)

В справочной странице traceroute указано, что ! X указывает на один из ответов ICMP об ошибке (кроме желаемого «Превышен TTL»). traceroute отказывается, когда видит его. Похоже, mtr более надежен.

Это странный случай. Я не могу понять, зачем вам заменять ответ «TTL превышен» на «административно запрещен», когда пакеты с достаточно большим TTL просто пропускаются. Спасибо mtr за терпение этой странности :).

По истечении времени отключения можно напечатать дополнительную аннотацию:! H,! N, или! P (хост, сеть или протокол недоступны),! S (исходный маршрут не удалось) ,! F (необходима фрагментация),! X (административная связь запрещена),! V (нарушение приоритета хоста),! C (ограничение приоритета в результате ) или! (Код недоступности ICMP). Если почти все зонды приводят к какой-либо недоступности, traceroute прекращает работу и завершает работу.

2
25.02.2016, 15:56
1 ответ

Это предложение относится к системным вызовам fork и exec ¹. Системный вызов fork создает новый процесс, дублируя вызывающий процесс: после запуска fork есть два процесса, каждый из которых имеет свою собственную память¹ с изначально идентичным содержимым, за исключением возвращаемого значения системного вызова fork , идентификатора процесса и некоторых других отличий. Системный вызов exec загружает изображение программы из файла и заменяет существующую память процесса этим изображением.

Для запуска программы в обычном смысле необходимо вызвать fork , чтобы создать новый процесс для выполнения программы, а затем вызвать exec в дочернем элементе для замены копия исходной программы по коду и данным новой программы. Это наиболее частое использование fork (часто с некоторыми вещами, сделанными до exec , такими как настройка перенаправления файлов).

Запуск exec без выполнения fork можно рассматривать как оптимизацию выполнения fork + exec и родительского выполнения. выйти из сразу после этого.Это не совсем эквивалентно, потому что fork + exec / exit изменяет родительский элемент результирующей программы, тогда как прямой exec не делает » т.

Флаг 1 процесса Linux сигнализирует о процессах, которые не вызывали exec , поскольку они были разветвлены их родителем, то есть дочерними элементами (или внуками и т. Д.) Исходного процесса своей программы. Вызов fork без вызова exec имеет несколько применений. (Это не исчерпывающий список, это лишь некоторые распространенные варианты использования.)

  • Некоторые программы используют несколько процессоров. Это можно сделать либо путем запуска нескольких потоков в одном процессе (тогда все потоки совместно используют память), либо путем запуска отдельных процессов на каждом процессоре (тогда они не разделяют память).
  • Запуск отдельных процессов - это способ изолировать некоторые задачи. Например, Chrome хранит каждую вкладку или каждую небольшую группу вкладок в отдельном процессе; Таким образом, если вкладка зависает или дает сбой, или если веб-страница вызывает брешь в безопасности, это не влияет на вкладки, отображаемые другими процессами. Отдельные процессы также могут быть полезны для выполнения разных задач с разными привилегиями; например, сервер OpenSSH выполняет большую часть своего кода от имени непривилегированного пользователя и выполняет только последний этап входа в систему от имени пользователя root. Оболочки используют fork для реализации подоболочки (части сценария, в которых переменные, перенаправления и т. Д. Не влияют на основной сценарий).
  • Демоны обычно начинаются с «двойного разветвления»: когда программа запускается, первое, что она делает, это fork , а затем родительский элемент завершается. Это обратная «оптимизации» exec , о которой я упоминал выше, и делается для того, чтобы изолировать процесс демона от его исходного родителя, и, в частности, чтобы избежать блокировки исходного родителя, если он ждал, пока его дочерний процесс завершить (как, например, при запуске программы в оболочке без и ).

¹ Есть нюансы, которые здесь не имеют значения и выходят за рамки этого ответа.

5
27.01.2020, 21:56

Теги

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