2010-02-12 3 views
0
#!/usr/bin/perl 
$sim = "multiq"; 
`make SCHED=$sim`; 
`script > scripter`; 
`echo hi`; 
print pack("c", 04); 
~ 

이 스크립트는 스크립트가 호출 될 때 중단됩니다. perl 스크립트를 계속 실행하는 방법을 모릅니다.Perl에서 script() linux 명령을 실행하고 끝내려면 어떻게해야합니까?

+0

이 코드를 쉘 스크립트로 이식하면 어떻게됩니까? – mob

+0

'인쇄 팩 ("c", 04)'? 그것 때문에 당신은'^ D'를 스크립트에 보내려고합니까? – mob

답변

5

백틱 (‘‘)은 명령을 실행하고 출력을 반환합니다. 당신이 출력을 무시하는 거라면 당신은 파이어 앤 포겟 프로그램을 (즉,이 완료되면 대한 걱정없이 배경에서 시작)하려면,

system("make SCHED=$sim") == 0 or die "$0: make exited " . ($? >> 8) 

같이 system를 사용 사용할 수 있습니다.

system("script >scripter &"); 
1

모두 상호 작용하려면 하나의 하위 프로세스에서 모두 실행해야합니다. 이를 처리하는 다양한 방법은 perlipc을 참조하십시오.

1

당신은 대화 형 세션을

0

역 따옴표를 ('')를 제어 명령을 실행하고 저장하고 그것을 더 조작 할 수 output.So을 반환 Expect보고 할 수 있습니다. 출력을 무시하려면 system()을 사용하십시오. 또한 백그라운드에서 프로세스를 실행하려면 프로세스 접두어에 &을 사용하십시오. 예를 들어 스크립트를 사용하여 Gimp를 시작하기를 원한다면 간단히 말하십시오.

system("gimp &"); 
관련 문제