我有一个Android Java应用程序,也有一个本地应用程序。本机应用程序是从Java应用程序启动的,如下所示:
mProcess = Runtime.getRuntime().exec(cmdLaunch,null,new (Files_dir));
本机进程实际上在一个循环中运行,并偶尔休眠一次。
下面是正在发生的事情。本机进程启动后,它运行约10至15秒。在那之后它就停了下来。Java应用程序仍然处于前台。我从日志中知道这个。没有什么能让它恢复。
因为我正在开发它,所以我启动了一个新的调试会话。这将杀死以前的Java应用程序,并启动一个新的应用程序。
现在,暂停的本机进程恢复并按预期继续运行。现在,这是无限期运行的,没有停顿。
这里发生了什么事?
当父进程(Java应用程序)被杀死时,子进程(本机应用程序)是否也被杀死了?为什么在父进程被杀死后,本机进程就开始运行,而没有任何问题。
发布于 2014-05-19 06:56:57
好的,有问题了。本机进程有大量printf语句。本机进程的“stdout”被重定向到父进程。这是默认行为吗。
父进程从未读取此缓冲区。因此,在本机进程中,“printf”行用于阻塞。
因此,当父进程死亡时,重定向必须已经停止,或者设置为/dev/null。因此,本机进程自由运行。
在创建流程时,我是否可以在Java代码中禁用输出的重定向?
https://stackoverflow.com/questions/23696961
复制相似问题