2015-04-19 2 views
0

Мне нужно написать сценарий, создающий дерево процессов, используя функцию fork(). Затем мне нужно использовать функцию exec() внутри скрипта для генерации только одного дерева процессов с командой pstree -c.Отдельное дерево процессов с exec

Ok, поэтому я создал процессы дерево, это не проблема, скажем:

int main() { 
    int pid1, pid2; 
    if(pid1 = fork()) { 
     printf("%d", pid1); 
    } else if (pid2 = fork()) { 
     printf("%d", pid2); 
    } else { 
     printf("%s", "parent process"); 
    } 
    return 0; 
} 

Но как я использую запускаемая функция для вызова pstree -c команду? И как я могу показать только одно конкретное дерево?

execl("/bin/pstree -c", "pstree -c", 0, 0); 

Я попытался с /bin/, без него ... ничего не работает, то дерево не отображается при запуске сценария.

И все равно оно будет отображать все дерево, а не только вилки, которые я использовал.

Как я могу это сделать?

ответ

1

Когда вы используете execl, каждый аргумент команды должен быть отдельным аргументом функции. Первым аргументом должен быть путь к программе, которую вы хотите выполнить; в названии программы нет -c, это аргумент. Если вы хотите показать текущее дерево процессов, вам нужно добавить аргумент PID.

char pid[10]; 
sprintf(pid, "%d", getpid()); 

execl("/bin/pstree", "pstree", "-c", pid, (char*)0); 
Смежные вопросы