Почему & ldquo; часы & rdquo; команда запускает два & ldquo; watch & rdquo; и & ldquo; sh & rdquo; процесс?

Когда я попытался запустить команду 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?

2
задан 31 July 2014 в 13:37

1 ответ

Для нахождения ответа, мы должны посмотреть на исходный код .

  1. команды часов, который Вы видите два watch процессы, потому что watch ветвления (строка 380) новый процесс каждый раз это должно выполнить команду:

    enter image description here

  2. дополнительное 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.
1
ответ дан 31 July 2014 в 13:37

Другие вопросы по тегам:

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