Como faço para sair do shell de comando depois que ele invoca um script Perl?

StackOverflow https://stackoverflow.com/questions/2049293

  •  20-09-2019
  •  | 
  •  

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top