Когда я попытался запустить команду watch ps
, я получил следующий результат:
Every 2.0s: ps Thu Jul 31 14:06:45 2014
PID TTY TIME CMD
4329 pts/1 00:00:00 bash
4380 pts/1 00:00:00 watch
4381 pts/1 00:00:00 watch
4382 pts/1 00:00:00 sh
4383 pts/1 00:00:00 ps
Почему эта команда запускает два процесса watch
вместо одного?
Также почему часы запускают экземпляр sh
?
Для нахождения ответа, мы должны посмотреть на исходный код .
команды часов, который Вы видите два watch
процессы, потому что watch
ветвления (строка 380) новый процесс каждый раз это должно выполнить команду:
дополнительное sh
процесс здесь, потому что watch
вызовы система () функция (строка 399) и по умолчанию он выполняет указанную команду с /bin/sh -c
. Посмотрите system
страница справочника:
NAME system - execute a shell command SYNOPSIS #include <stdlib.h> int system(const char *command); DESCRIPTION system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During exe‐ cution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.