What is the meaning of Java Process.exitValue () values?

I use Processthrough ProcessBuilderto run an executable file made in C code. I catch Process.exitValue()to respond to these output values. I noticed that not all output values ​​from the executable file. For example, I get an output value of 139 and nowhere in my C code do I return an output value of 139.

I am trying to find an overview of the output values, but I cannot find this, and now I have found that the output value may be OS dependent. (By the way, I'm using Ubuntu).

It seems the only output value that needs to be sure is 0 when everything goes right. Are there specifications for output values? Can I be sure that a certain range can only be used for my own program? What exit codes are reserved for the OS.

I found out that 139 is probably a memory error in C code. I want to get rid of the possible. I cannot get an overview of output values ​​(e.g. 139 = .....)

This is simplified code, by the way:

ProcessBuilder p = new ProcessBuilder(executableName,
   executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();

Note. Running the C executable in the Ubuntu shell does not give any error (i.e. the output value is 0). But executing the same command in Java gives an output value of 139.

+5
source share
1 answer

(, ), 128 + SIGNAL - . linux signal(7) manpage .

, linux , sysexits.h, , , . exit(3) manpage:

BSD ; . <sysexits.h>.

, , :

#define EX_OK           0  /* successful termination */

#define EX__BASE        64  /* base value for error messages */

#define EX_USAGE        64  /* command line usage error */
#define EX_DATAERR      65  /* data format error */
#define EX_NOINPUT      66  /* cannot open input */
#define EX_NOUSER       67  /* addressee unknown */
#define EX_NOHOST       68  /* host name unknown */
#define EX_UNAVAILABLE  69  /* service unavailable */
#define EX_SOFTWARE     70  /* internal software error */
#define EX_OSERR        71  /* system error (e.g., can't fork) */
#define EX_OSFILE       72  /* critical OS file missing */
#define EX_CANTCREAT    73  /* can't create (user) output file */
#define EX_IOERR        74  /* input/output error */
#define EX_TEMPFAIL     75  /* temp failure; user is invited to retry */
#define EX_PROTOCOL     76  /* remote error in protocol */
#define EX_NOPERM       77  /* permission denied */
#define EX_CONFIG       78  /* configuration error */

#define EX__MAX         78  /* maximum listed value */

, , .

: (.. ), . , , .

.

+4

All Articles