linux的C獲取shell執行返回的結果


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM