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

该脚本在调用脚本时挂起。不知道如何让perl脚本继续运行。如何从Perl运行并结束script()linux命令?

+0

如果端口这段代码恰好一个shell脚本是什么? – mob 2010-02-12 19:55:04

+0

'print pack(“c”,04)'?你是这么试图发送'^ D'到剧本吗? – mob 2010-02-12 19:56:25

回答

5

请注意反引号(‘‘)运行一个命令并返回其输出。如果你要忽略输出,使用system

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

如果你要发射后不管的程序(即在后台启动它,而不用担心它完成的时候),你可以使用

system("script >scripter &"); 
1

如果你想让它全部交互,你必须在一个子进程中运行它。请参阅perlipc以了解处理该问题的各种方法。

1

你可能想看看Expect控制交互式会话

0

反引号(““)运行一个命令,返回其output.So可以存储并进一步操纵它。如果你想忽略输出,使用system()。另外,如果您想在后台运行任何进程,请在进程的前缀中使用&。例如,你想使用脚本来启动GIMP简单地说

system("gimp &");