Was ist die Bedeutung von Werten aus Java-Prozess.exitValue()?
Ich bin mit Process
über ProcessBuilder
zum ausführen einer ausführbaren Datei gemacht, in C-code. Ich bin, fangen die Process.exitValue()
reagieren auf diese exit-Werte. Ich bemerkte nicht alle exit-Werte sind aus der ausführbaren Datei. Zum Beispiel bekomme ich immer einen exit-Wert von 139 und nirgendwo in meinem C-code bin ich wieder ein exit-Wert von 139.
Ich versuche zu finden, eine übersicht über die exit-Werte, aber ich kann nicht finden, und jetzt fand ich heraus, das exit-Wert kann OS abhängig. (Ich benutze Ubuntu).
Es scheint die einzige exit-Wert sicher zu sein, ist 0, wenn alles richtig geht.
Gibt es Vorgaben über die exit-Werte? Kann ich sicher sein, dass ein bestimmter Bereich kann verwendet werden, nur für mein eigenes Programm? Welche exit-codes sind reserviert für das OS.
Fand ich heraus, dass 139 ist wohl ein Speicher-Fehler im C-code. Ich möchte, um loszuwerden, das wohl. Ich bekomme keine übersicht über die exit-Werte (z.B. 139 = .....)
Dies ist der vereinfachte code by the way:
ProcessBuilder p = new ProcessBuilder(executableName,
executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();
Hinweis: durch Ausführen der ausführbaren C in der Ubuntu-shell gibt keine Fehler bei allen (d.h. exit-Wert 0). Aber, tun Sie den gleichen Befehl in Java gibt den exit-Wert 139.
Dieser beantwortet deine Frage, glaube ich.
Gefunden dieser auch, aber ich weiß nicht, wie bedeutsam es für Sie ist.
und Kazekage, danke, aber das habe ich ungefähr herausgefunden, was ich wissen muss ist, welche exit-Code kann ich im c-code, um sicher zu sein es ist meine eigene exit-Code, und: wo finde ich die Liste mit exit-codes? Die Antwort bezeichnet, ich habe Suche auf stackoverflow, bevor dieses posting Frage.
der zweite Kommentar, der kazekage ist nützlich: es zeigt den Bereich...
InformationsquelleAutor michel.iamit | 2012-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn das system tötet Ihre Anwendung (wie im Fall von Segmentation fault) es setzt den exit-code 128 + SIGNAL - linux
signal(7)
- manpage für die signal-Werte.Auch, für linux gibt es mehrere Standard-exit-codes definiert, die in
sysexits.h
header-Datei, und es wird empfohlen, die Programmierer verwenden diese Konstanten anstatt manuell die Definition der eigenen Werte. Vonexit(3)
- manpage:Finden Sie die Datei zum Beispiel hier, und die Werte, die im Lieferumfang enthalten sind:
Jedoch, Sie zu benutzen ist nicht zwingend erforderlich, und Sie sind frei, alle von Ihnen gewünschten Wert.
Die Allgemeine Antwort ist - wenn Ihre Anwendung nicht ordnungsgemäß (d.h. es ist in der Lage, den Fehler ein beenden der Ausführung), dann setzt es den exit-code von selbst. Wenn die Anwendung ist getötet durch das system, es ist das system, wer bestimmt den exit-code.
Können Sie auch sehen dieser thread für weitere Informationen.
InformationsquelleAutor npe