Crie uma árvore de processos

1

Estou implementando o pstree como uma atribuição

e gostaria de criar árvore de teste de processos , mas estou com dificuldades para fazer isso.

Eu tentei fazer algo assim para criar uma árvore de processos em segundo plano para que eu possa testar meu script mais tarde.

árvore recursiva de processos

childProcess(){

        echo "mine PID is: "$$

        local -i level=$(expr $1 - 1)  # level of recursion

        if [[ $level -gt 0 ]]; then
          echo $level
          childProcess $level &           # we do binary tree
          echo "Process with  PID $! launched"
          childProcess $level &
          echo "Process with  PID $! launched"
          sleep $level
          echo "baf! "$level" pid is: "$$
        fi
}


# create binary tree of depth 4
for (( i = 0; i < 2; i++ )); do
    childProcess 4 &
    echo "running proces no. :"$!
done

Mas eu gostaria de fazer eco ao PID a partir do processo, e com isso não posso.

Outra solução que não funciona seria isso, mas cria processos na "maneira DFS".

declare -i level=$1


if [[ $level -gt 0 ]]; then
  sh $0 $(expr $level - 1)  # spawn children
  sh $0 $(expr $level - 1)  # spawn children

  sleep 100;
  echo "level :"$level" process no: "$$
fi

Alguém pode me dizer como construir uma árvore de processos que eu possa acessar pelo PID, e que estaria lá até que eu os exclua, por exemplo? matando o processo mais antigo.

    
por Martin 17.05.2015 / 23:18

0 respostas