我正在尝试编写一个Perl脚本,在Windows Media Player上依次在n
目录中运行视频。
出于某种原因,在第64次视频播放时,它被卡在system(1, @commands)
上。
现在,命令是以下for循环中的system(1, "C:\\Program Files (x86)\\Windows Media Player\\wmplayer", $path);
。
for (my $i = 0; $i < $n; $i++)
{
# do stuff
# Play video
system(1, "C:\\Program Files (x86)\\Windows Media Player\\wmplayer", $path);
sleep $duration + 1;
# do stuff
}
我想知道为什么它一直停在第64个视频(我已经多次运行,它总是第64个。)也许有人可以更好地向我解释system(1, @commands)
?我所知道的是,它只是不等@commands
完成继续该计划之前......
非常感谢!
您已达到可以同时运行的最大子进程数。收获那些使用waitpid
完成的。
或者,如果您不关心进程的退出代码,那么您可能会更幸运
system(qq{start /b "" "c:\...\wmplayer" "$path"});
感谢大家的帮助!
我发现VLC播放器比Windows Media Player有更多的命令行支持,而且它正是我所需要的:
vlc --play-and-exit $path
我停止使用system(1,@commands)
,我只是使用常规的旧system(@commands)
,到目前为止一切似乎都运行良好! =]
语法是
system(command,@args)
要么
@args=("command","arg1","arg2");
system(@args);
在你的情况下,命令是1
,不知道它意味着什么。而是试试
system("C:\\Program Files (x86)\\Windows Media Player\\wmplayer.exe", $path);
这里,命令是.exe
(或二进制),它将视频路径作为参数。
更新:根据评论
system(1,"C:/Program Files (x86)/Windows Media Player/wmplayer.exe", $path);
应该管用。正常播放第64个视频,检查它是否有效,或者重新配置视频序列,看看它是否仍然是导致第64个视频问题。