簡體   English   中英

使用Runtime.exec從Java運行進程-退出代碼139

[英]Run process from Java with Runtime.exec - exit code 139

我想在Linux中從Java運行C ++程序

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("/home/user/myProgram inputFilePath secondArgument");
int exitVal = pr.waitFor();

如果我從終端運行相同的命令,則一切正常,問題是當我從Java運行它時。 我正在獲取退出代碼139。該程序得到執行,但是執行時出現故障。 實際上,如果我不輸入inputFilepath ,程序就會很好地執行,我可以通過stdout捕獲有關“缺少輸入文件”的消息。

任何想法?

解決方案:經過反復試驗后,我發現了問題所在。 顯然,在參數末尾需要一個“ \\ n”,可能被我正在運行的C ++程序用作標志。 解析參數時肯定存在分段錯誤。

139是退出代碼,如果C ++程序因分段錯誤而崩潰,您將看到該退出代碼。 這將表明C ++程序中存在內存訪問錯誤。 請參閱Linux中是否有任何標准的退出狀態代碼?

或者,該程序可能由於其自身原因以退出代碼139退出。 在不知道程序是什么的情況下,實際上不可能更加具體。

您是否檢查過此命令在Linux控制台中返回的內容? 嘗試運行“ / home / user / myProgram inputFilePath secondArgument; echo $?”。 退出時返回139表示命令返回139,這不是Java代碼的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM