有幾種調用C++可執行程序的方法。例如,我們可以使用python腳本可以知道Android環境中C++主函數的返回值
def run_exe_return_code(run_cmd):
process=subprocess.Popen(run_cmd,stdout=subprocess.PIPE,shell=True)
(output,err)=process.communicate()
exit_code = process.wait()
print output
print err
print exit_code
return exit_code
處理一個C++可執行程序:run_exe_return_code('abc')
而abc
由以下的C創建++代碼:
int main()
{
return 1;
}
在上述代碼中,程序的返回值是1,如果我們在Linux中運行這個Python腳本,我們總能看到Python腳本的返回值爲1.但是,在Android環境中,上面的python腳本中的返回出口代碼似乎是0,這意味着成功。有沒有一種解決方案,Python腳本可以知道Android環境中主函數的返回值?
順便說一下,在Android環境下,我使用adb shell abc
而不是abc
來運行該程序。
你能描述一個這不起作用的真實例子嗎?是什麼讓你覺得0不是正確答案? –
@ReutSharabani測試它非常簡單。在main()函數中,你什麼都不做,只能返回1.然後你只需運行run_exe_return_code python函數,並且exit_code爲0.然後,如果你將main()函數中的返回值更改爲0,並運行一次python腳本再次,你會發現exit_code仍爲0. – feelfree
@feelfree那麼爲什麼不使用'int main(){return 1;}'來創建一個*完整的例子呢?它可以避免混淆,更重要的是可以立即編譯。 – luk32