我需要從C調用一個python腳本,並能夠從中捕獲返回值。它的值並不特別重要,它們可能也是一個枚舉,但是我從測試用例中獲得的價值讓我困惑不已,而且我想要深入瞭解我所看到的。c系統()從python腳本返回 - 令人困惑!
所以,這裏是C:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int out = 0;
out = system("python /1.py");
printf("script 1 returned %d\n", out);
return 0;
}
這裏是/1.py
:
import sys
sys.exit(1)
這些程序的輸出是這樣的:
script 1 returned 256
一些其他值:
2 -> 512
800 -> 8192
8073784 -> 14336
假設它是...閱讀而不是大的endian,或什麼?我怎麼能寫一個c函數(或伎倆python中)正確返回和解釋數字?
C99§7.20.4.6.3:「如果參數是一個空指針,那麼只有當命令處理器可用時,'system'函數才返回非零值;如果參數不是空指針,'system'函數返回,它返回一個實現定義的值。「 – 2010-11-06 01:23:26
@Adam,@Hasturkun,感謝您的糾正。 – 2010-11-06 13:55:51
我不知道爲什麼system()手冊頁不只是說「你可以通過調用'WEXISTSTATUS(system(」command「));'」來訪問返回值,但我確定有一個很好的理由。感謝澄清:) – tehwalrus 2010-11-07 13:02:26