Да, я видел, что уже есть подобный вопрос, но я пришел через kill -- -0 и хотел узнать, что делает --?

13
manifestor 13 Дек 2017 в 19:31
2
У нас уже есть unix.stackexchange.com/questions/11376.
 – 
JdeBP
14 Дек 2017 в 00:09
Этот пост объясняет часть вопроса (часть --), но не объясняет -0, хотя
 – 
Sergiy Kolodyazhnyy
14 Дек 2017 в 03:40
Где ты наткнулся на это? Я никогда не видел его раньше, и мне любопытно. Спасибо!
 – 
cxw
14 Дек 2017 в 04:08
Вопрос не в -0. Действительно, вопрос явно указывает на существующий вопрос, который также охватывает это.
 – 
JdeBP
14 Дек 2017 в 09:45
Вопрос касается нулевого сигнала (то, чего нет), а не параметризации! Не обман!
 – 
peterh
14 Дек 2017 в 11:21

2 ответа

Лучший ответ

В мире UNIX/Linux два тире один за другим означают конец опций. Например, если вы хотите найти строку -n с grep, вы должны использовать такую ​​команду:

grep -- -n file

Если вы хотите получить только номер строки в приведенном выше случае, вы должны использовать

grep -l -- -n file

Таким образом, команда kill -- -0 пытается отправить сигнал процессу с идентификатором -0 (минус ноль)

16
Romeo Ninov 13 Дек 2017 в 19:36
12
Что касается процесса 0: «Если pid равен 0, то sig отправляется каждому процессу в группе процессов вызывающего процесса». (kill(2))
 – 
ilkkachu
13 Дек 2017 в 19:40
Просто для записи PID 0 доступен в некоторых ОС UNIX (например, Solaris)
 – 
Romeo Ninov
13 Дек 2017 в 19:44
Надеюсь, как какой-то системный/ядерный процесс? Хотя FWIW, POSIX имеет почти такое же описание уничтожения pid 0, за исключением того, что он упоминает неуказанные системные процессы.
 – 
ilkkachu
13 Дек 2017 в 19:49
1
Зачем кому-то передавать PID минус ноль? Разве целые числа на всех процессорах, работающих под управлением POSIX-совместимых операционных систем, сегодня не являются дополнением до двух, поэтому отсутствует какая-либо специальная кодировка для -0?
 – 
Ruslan
14 Дек 2017 в 00:22
2
-0 опция ничего не отправит. -0 не вариант будет. Отсюда -- в команде здесь.
 – 
muru
14 Дек 2017 в 07:08

В этом случае он используется для обозначения того, что -0 не является передаваемой опцией. Если вы должны были сделать kill -0, он будет думать о -0 как о опции, а не как о PID. прошел в.

Например, если вы сделали ls -- -l, он будет искать файл с именем -l, а не просто перечислять каталог в длинной форме.

6
namor 13 Дек 2017 в 19:39