初来乍到:关于进程调度的问题

初来乍到:关于进程调度的问题

初来乍到:关于进程调度的问题
初来乍到,
各位前辈,这厢有礼了。

现在描述一下我的问题。

现状:
在我的程序中需要调用三个外部程序,然后等待三个外部程序的输出文件,将这三个文件合并成一个文件,再做此后的处理。

(之前的处理方式:手动执行三个外部程序,在得到结果后,手动合并。)

现在要实现问题的自动化,希望在一个程序中完成。

问题所在:
由于三个外部程序执行完成需要很长时间,而且输出文件也不是一次写成的。所以,
1。三个外部程序执行完成的时间有可能同调用的先后顺序不同,(即最后调用的可能最先执行完成)
2。三个程序的输出不是一下子写完的。

此前的解决方式是
采用system调用外部程序,前两次采用 “&” 方式后台运行,第三次直接调用。
但是,调试中发现了上面的问题。

这个问题如何解决,请您帮助和指导。
谢谢!

[b][/b][b][/b][b][/b]
IPC::open2 + system + kill
$pid1 = IPC::open2(..., '命令1');
$pid2 = IPC::open2(..., '命令2');
system('命令3');

while(1){
if(not kill 0, $pid1 and not kill 0, $pid2){
合并
last;
}else{
sleep(5);
}
}




   

这是不是需要安装什么模块.
这是不是需要安装什么模块啊,这个 IPC 从哪里找啊?

顺便追问一句,这三个外部exe程序都是运行时间很长的,而且很占用系统资源的,
这样的话,在这里加了一个死循环,是不是会很费系统资源??
如果[color=#A52A2A]都很[.
如果[color=#A52A2A]都很[/color]占资源的话,还是老老实实三次system好了。[color=#A52A2A]很[/color]占资源的程序并行跑没啥意义的。
同意楼上的。--另外如果.
同意楼上的。
另外如果要并发的话,可以检查三个进程生成的文件必须完整。如:规定每个文件结尾必须有特定标志。否则说明还没处理完。
另外也可以用ps检查进程,看看进程跑完了没有。
但是,文件不是一次写成的.
但是,文件不是一次写成的,结尾没有特殊的标记.而且在这个外部程序是个.exe程序,没法儿再修改了.它每次写入数据都是"打开文件-写入-关闭文件"的操作,所以查看文件的的方法是行不通的.