script de wrapper: fork: retry: nenhum processo filho

1

"myapplication" precisa de alguma configuração ou limpeza, por isso uso o seguinte script de wrapper:

#!/bin/bash
echo "Do important set up stuff"
myapplication
echo "Clean up"

e colocá-lo no meu caminho, chamado "myapplication" por isso, tem precedência sobre o original automaticamente. Isso funcionou durante o teste, mas parou quando eu o coloquei no caminho, apresentando o seguinte erro:

/home/user/bin/myapplication: fork: retry: No child processes
[more of the same line]
/home/user/bin/myapplication: fork: retry: No child processes
/home/user/bin/myapplication: fork: Resource temporarily unavailable

e também causando o mau funcionamento de outros programas com o mesmo erro no tempo após o script ser iniciado antes de ser anulado com o último erro.

    
por Nobody 25.07.2016 / 16:41

1 resposta

3

Quando o script estiver no caminho, a linha no script que deve chamar o programa original chama o script, que cria uma recursão infinita sem terminação até que algum limite do sistema seja atingido.

A abordagem correta é fazer which myapplication antes de colocar o script no PATH para encontrar o caminho absoluto para o executável original do myapplication e, em seguida, usar esse caminho para chamar o myapplication do script.

A lição a ser aprendida em geral é: esse erro pode indicar uma recursão não terminada.

    
por 25.07.2016 / 17:17