Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Process.waitFor方法的本机实现_Java_Java Native Interface - Fatal编程技术网

Java Process.waitFor方法的本机实现

Java Process.waitFor方法的本机实现,java,java-native-interface,Java,Java Native Interface,我使用了Process类的方法来执行一些UNIX命令。该命令正在成功执行,但它返回的是2,这是根据约定的意思 我在谷歌上搜索到,这取决于“输出这个退出代码的程序的源代码”。所以我试图找到waitFor方法的源代码,我知道它是一个本机方法,在ProcessImpl类中定义 public native int waitFor(); 因此,我从中获得了此方法的本机实现。但是我没有找到为我提供waitFor方法本机实现的文件 我的问题是如何找到写入此方法本机实现的文件?提到的源代码是指使用进程对象执行

我使用了Process类的方法来执行一些UNIX命令。该命令正在成功执行,但它返回的是
2
,这是根据约定的意思

我在谷歌上搜索到,这取决于“输出这个退出代码的程序的源代码”。所以我试图找到waitFor方法的源代码,我知道它是一个本机方法,在
ProcessImpl
类中定义

public native int waitFor();
因此,我从中获得了此方法的本机实现。但是我没有找到为我提供
waitFor
方法本机实现的文件


我的问题是如何找到写入此方法本机实现的文件?

提到的
源代码
是指使用
进程
对象执行的程序的源代码

在您的情况下,使用退出代码2终止的是使用
进程执行的UNIX命令,而不是
waitFor()
方法本身

所以要回答您的实际问题,答案是:例如,在您使用的JDK的源代码中


但是,如果您的实际问题是“为什么waitFor()返回非零退出代码”,那么答案是:您正在使用Java执行的进程返回了非零退出代码,
进程
对象通过返回
waitFor()通知您
方法

提到的
源代码
指的是使用
进程
对象执行的程序的源代码

在您的情况下,使用退出代码2终止的是使用
进程执行的UNIX命令,而不是
waitFor()
方法本身

所以要回答您的实际问题,答案是:例如,在您使用的JDK的源代码中


但是,如果您的实际问题是“为什么waitFor()返回非零退出代码”,那么答案是:您使用Java执行的进程返回了非零退出代码,
进程
对象通过返回
waitFor()
方法通知您,但是,
waitFor
是否只返回流程的退出代码?在JDK7中,
waitFor()
是用Java编写的(使用本机的
waitForInterruptibly
),而
waitFor()
返回
exitValue()
,调用
getExitCodeProcess()
,看起来它实际上只是进程的退出代码。因此,您正在运行的进程执行了退出(2)[如果是用C写的]或类似的东西。我认为JDK6中本机的
waitFor
源代码对您没有帮助。Process的源代码waitFor()与execute程序退出代码2无关。你弄错了。谢谢@ajb和EJP的回复,尽管照看
waitFor
方法的本机实现对我没有帮助,但我还是想知道如何找到
waitFor
方法的本机实现是在哪个文件中编写的,目前我最不关心waitFor返回的内容,但是,是的,我想知道流如何返回该值以及从何处返回该值。我不确定,但
waitFor
是否只返回进程的退出代码?在JDK7中,
waitFor()
是用Java编写的(使用本机的
waitForInterruptibly
),而
waitFor()
返回
exitValue()
,调用
getExitCodeProcess()
,看起来它实际上只是进程的退出代码。因此,您正在运行的进程执行了退出(2)[如果是用C写的]或类似的东西。我认为JDK6中本机的
waitFor
源代码对您没有帮助。Process的源代码waitFor()与execute程序退出代码2无关。你弄错了。谢谢@ajb和EJP的回复,尽管照看
waitFor
方法的本机实现对我没有帮助,但我还是想知道如何找到
waitFor
方法的本机实现是在哪个文件中编写的,目前我最不关心waitFor返回的内容,但是,是的,我想知道该值是如何返回的以及从何处返回的。@Andreq Stubbs感谢您的回答,我的问题是如何找到该方法的本机实现所写入的文件?我在2013年10月搜索了
openjdk-6-src-b28-04。tar\jdk\src\share\native\java
目录,但没有找到实现waitFor方法的
C
CPP
文件,该文件在
ProcessImpl
class@Andreq斯塔布斯:谢谢你的回复,我的问题是如何找到编写此方法本机实现的文件?我在2013年10月搜索了
openjdk-6-src-b28-04。tar\jdk\src\share\native\java
目录,但没有找到实现waitFor方法的
C
CPP
文件,该文件在
ProcessImpl
类中声明为native