在C語言中,可以使用系統函數system()
來執行shell命令,并獲取其返回值。
system()
函數的原型如下:
int system(const char *command);
command
參數是一個字符串,用于指定要執行的shell命令。system()
函數會在新的子進程中執行該命令,并返回子進程的退出狀態碼。
要獲取shell命令的返回值,可以使用system()
函數的返回值。如果返回值為-1,表示執行system()
函數時出錯;如果返回值為其他非零值,表示命令執行成功并返回的是子進程的退出狀態碼;如果返回值為0,表示命令執行成功并且子進程正常退出。
下面是一個示例代碼,演示了如何使用system()
函數獲取shell命令的返回值:
#include <stdio.h>
#include <stdlib.h>
int main() {
int ret = system("ls -l"); // 執行shell命令"ls -l"
if (ret == -1) {
printf("調用system函數失敗\n");
} else if (WIFEXITED(ret)) {
int exit_status = WEXITSTATUS(ret);
printf("命令正常退出,退出狀態碼為:%d\n", exit_status);
} else {
printf("命令異常退出\n");
}
return 0;
}
在上述示例中,使用system("ls -l")
執行了ls -l
命令,并將返回值賦給ret
變量。通過判斷ret
的值,可以確定命令的執行狀態。如果ret
為-1,表示執行失敗;如果ret
為0,則說明命令正常退出;如果ret
為其他非零值,則說明命令執行異常。如果命令正常退出,可以使用WEXITSTATUS
宏獲取命令的退出狀態碼。
需要注意的是,system()
函數只能獲取到命令的退出狀態碼,無法直接獲取命令的輸出結果。如果需要獲取命令的輸出結果,可以將命令結果重定向到文件,再讀取文件中的內容。