PID criado com system ()

0

Eu sou novo no Ubuntu. Estou criando um programm com abre 2/4/8 novo processo em terminais separados. Usando o sistema (). Como posso obter PID deles, ou alterar o valor agradável, usando outro terminal?

    
por Max 22.11.2014 / 19:55

1 resposta

1

Geralmente pidof(8) e em casos mais complicados pgrep(1) são excelentes ferramentas para encontrar o ID de alguns processos.

Se você quiser encontrar todos os filhos de um processo específico, é necessário pesquisar o sistema de arquivos /proc . Vamos supor que você esteja procurando os filhos do processo 2345:

for PROCSTAT in /proc/[0-9]*/stat; do
    read -r PID PROCNAME STATUS PPID TAIL < $PROCSTAT
    if [ $PPID -eq 2345 ]; then
        echo $PID
    fi
done

Se você optar por usar

system("foobar");

em vez de

if (fork() == 0) {
    execlp("foobar", "foobar", NULL);
}

ele realmente gerará dois processos: /bin/sh como filho direto e foobar como neto.

    
por David Foerster 22.11.2014 / 22:26