Como faço para sair do shell de comando depois que ele invoca um script Perl?
Pergunta
Se eu executar um script Perl a partir de um prompt de comando (C: Windows System32 cmd.exe), como posso sair do prompt de comando após o término do script.
eu tentei system("exit 0")
Dentro do script Perl, mas isso não sai do shell prompt de CMD de onde o script Perl está em execução.
Eu também tentei exit;
comando no script Perl, mas isso também não funciona.
Solução
Se você estiver iniciando o shell de comando apenas para executar o script Perl, a resposta de Arkaitz Jimenez deve funcionar (eu votei nele.)
Caso contrário, você pode criar um arquivo em lote como runmyscript.bat
, com conteúdo:
@echo off
perl myscript.pl
exit
o exit
terminará a sessão da concha (e como efeito colateral, encerrará o próprio script em lote.)
Outras dicas
Tente executar o script Perl com uma linha de comando como esta:
perl script.pl & exit
O AMPERSAND iniciará o segundo comando após o término do primeiro. Você também pode usar &&
Para executar o segundo comando apenas se o primeiro foi bem -sucedido (o código de erro for 0).
Você tentou cmd.exe /C perl yourscript.pl
?
De acordo com cmd.exe /?
/C
realiza o comando especificado por string e depois termina.
Você pode iniciar o programa em uma nova janela usando o Inicie o comando DOS. Se você ligar isso com /B
então nenhuma janela adicional é criada. Em seguida, você pode ligar para sair para fechar a janela atual.
Isso faria o truque?
Você pode enviar um sinal para a concha pai de Perl:
kill(9,$PARENT_PID);`
Infelizmente, o getppid()
A função não é implementada no Perl no Windows, então você terá que descobrir o pid de shell pai por meio de outros meios. Além disso, o sinal nº 9 pode não ser a melhor escolha.