Perl 스크립트를 호출 한 후 명령 쉘을 어떻게 종료합니까?
문제
명령 프롬프트 (c : wind
나는 시도했다 system("exit 0")
Perl 스크립트 내부에서는 Perl 스크립트가 실행중인 위치에서 CMD 프롬프트 쉘을 종료하지 않습니다.
나는 또한 시도했다 exit;
PERL 스크립트에서 명령하지만 작동하지 않습니다.
해결책
Perl 스크립트를 실행하기 위해 명령 쉘을 시작하는 경우 Arkaitz Jimenez의 답변이 작동해야합니다 (투표했습니다.)
그렇지 않다면 다음과 같은 배치 파일을 만들 수 있습니다. runmyscript.bat
, 콘텐츠 :
@echo off
perl myscript.pl
exit
그만큼 exit
쉘 세션을 종료합니다 (부작용으로 배치 스크립트 자체를 종료하십시오.)
다른 팁
다음과 같은 명령 줄로 Perl 스크립트를 실행하십시오.
perl script.pl & exit
Ampersand는 첫 번째 명령이 끝난 후 두 번째 명령을 시작합니다. 당신은 또한 사용할 수 있습니다 &&
첫 번째 명령을 실행하려면 첫 번째 명령이 성공한 경우에만 (오류 코드는 0).
당신은 시도 했습니까? cmd.exe /C perl yourscript.pl
?
에 따르면 cmd.exe /?
/C
문자열로 지정된 명령을 수행 한 다음 종료합니다.
당신은 다음을 사용하여 새 창에서 프로그램을 시작할 수 있습니다. DOS 명령을 시작하십시오. 당신이 그것을 부르면 /B
그런 다음 추가 창이 작성되지 않습니다. 그런 다음 출구로 전화하여 현재 창을 닫을 수 있습니다.
그것이 트릭을할까요?
Perl에서 상위 쉘에 신호를 보낼 수 있습니다.
kill(9,$PARENT_PID);`
불행히도, getppid()
기능은 Windows의 Perl에서 구현되지 않으므로 다른 수단을 통해 상위 쉘 PID를 찾아야합니다. 또한 신호 #9가 최선의 선택이 아닐 수도 있습니다.