linux的C程式 呼叫 shell指令碼,獲取shell的執行結果
阿新 • • 發佈:2019-02-19
linux下通過C執行命令的時候一半都是使用system()方法,但是該方法執行命令返回的值是-1或0,而有時候我們需要得到執行命令後的結果。可以使用管道實現
輸出到檔案流的函式是popen(),例如
FILE *isr;
isr = popen("ls -l","r"); ls -l命令的輸出通過管道讀取("r"引數)到isr
下面是演示例子,列出當前可用的loop裝置,(必須是root許可權才可以執行losetup -f)
#include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <string.h> char* cmd_system(const char* command); int main() { //char str[20]={"0"}; char* result = cmd_system("losetup -f"); //通過該方法可以將char*轉換為char陣列 //strcpy(str,result); printf("The result:%s\n",result); return 0; } char* cmd_system(const char* command) { char* result = ""; FILE *fpRead; fpRead = popen(command, "r"); char buf[1024]; memset(buf,'\0',sizeof(buf)); while(fgets(buf,1024-1,fpRead)!=NULL) { result = buf; } if(fpRead!=NULL) pclose(fpRead); return result; }
執行結果:
The result:/dev/loop0