alven_lee 发表于 2007-11-02 16:08

第一次mac开发,process waitfor的问题(求解决方案,最好附代码)

我的苹果系统是osx10.3。java是1.4.2。使用netbeans5.0作为java swing的开发工具。
现在遇到一个问题。我用getRuntime().exec打开一个外部程序,想等这个被打开的程序结束后,继续运行下面的程序。windows低下,我用process.waitfor()。知道被打开程序关闭为止,再执行process.waitfor()后面对的程序。这个语句在windows下有效果。可是在苹果下就没有效果。程序没有等待,而是直接运行process.waitfor()后的程序了。

String filename = "xxxxxxx";--->苹果下要打开的外部程序。
Process process = Runtime.getRuntime().exec.......。打开这个外部程序。
System.out.println("open");
try{
    process.waitfor();让程序等待
    System.out.println("over");被打开的外部程序关闭后,打印输出over。
}catch(InterruptedException e){
}
程序运行后的打印输出结果是:
open
over
这个时候,被打开的程序还没有被关闭。process.waitfor没有发挥作用。

请高手指教一下。我该怎么实现功能。这个功能我在windows底下是可以实现的,运行没有问题。苹果系统下,虽然可以打开外部程序,可是并没有等待外部程序结束。

[ 本帖最后由 alven_lee 于 2007-11-6 17:08 编辑 ]

alven_lee 发表于 2007-11-05 11:43

难道没有人能回答?

sakulagi 发表于 2007-11-05 14:52

Runtime.exec()运行的外部程序是什么?你自己开发的?系统自带的?具体的命令行是什么?

alven_lee 发表于 2007-11-06 14:55

用exec()启动有什么特殊方法么?直接指定要启动的第三方程序的路径就可以了。windows底下没有问题。可是到苹果系统下waitfor就不起作用了。
版主老大,知道为什么?请教一下,能教教我么?

[ 本帖最后由 alven_lee 于 2007-11-6 14:57 编辑 ]

sakulagi 发表于 2007-11-07 08:53

我还是不太清楚你执行的命令在Windows上和Mac OS X上是一样的命令行么?很有可能是程序在一个新的进程,或者是后台运行,然后你的命令行就马上退出了

sakulagi 发表于 2007-11-07 13:53

原帖由 sakulagi 于 2007-11-7 08:53 发表 http://bbs.chinaunix.net/images/common/back.gif
我还是不太清楚你执行的命令在Windows上和Mac OS X上是一样的命令行么?很有可能是程序在创建的一个新的进程中运行,或者是后台运行,然后你的命令行就马上退出了

sakulagi 发表于 2007-11-07 13:54

另外Process.waitFor()在不同的操作系统上确实内部实现是不同的,不过在不清楚你执行的外部程序的命令行的情况下,还是很难判断

alven_lee 发表于 2007-11-13 16:27

明白了。
版主老大,我的程序是这样写的。
Process process = Runtime.getRuntime().exec("open /path/application");
我是这样写的。path是路径,application是程序。就拿ical说吧。用这个语句可以打开ical。但是,process.waitfor(),并不能使进程阻塞。
请老大帮助。

sakulagi 发表于 2007-11-16 11:23

不能用open命令。我手头没有Mac的机器,所以没法实验,不过用open肯定是不行的。

overthere 发表于 2007-11-17 12:47

查查UNIX下是如何做的
页: [1] 2
查看完整版本: 第一次mac开发,process waitfor的问题(求解决方案,最好附代码)