欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言獲取Shell返回結果的實現(xiàn)方法

 更新時間:2016年07月01日 11:11:21   投稿:jingxian  
下面小編就為大家?guī)硪黄狢語言獲取Shell返回結果的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Linux編程時候,如果我們需要調用shell命令或腳本通常使用system方法。如system("ls")

該方法返回值為0或-1,即成功或失敗。而有的時候我們想要獲取shell命令執(zhí)行的結果,該怎么辦呢?

我們可以將shell命令結果重定向到文件中,然后再讀取這個文件,如:

system("ls>result.txt")

FILE *fp = fopen(result, "r")

當然我們也可以直接使用管道,如下面示例:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <strings.h>
#include <string.h>

char* shellcmd(char* cmd, char* buff, int size)
{
  char temp[256];
  FILE* fp = NULL;
  int offset = 0;
  int len;
  
  fp = popen(cmd, "r");
  if(fp == NULL)
  {
    return NULL;
  }

  while(fgets(temp, sizeof(temp), fp) != NULL)
  {
    len = strlen(temp);
    if(offset + len < size)
    {
      strcpy(buff+offset, temp);
      offset += len;
    }
    else
    {
      buff[offset] = 0;
      break;
    }
  }
  
  if(fp != NULL)
  {
    pclose(fp);
  }

  return buff;
}

int main(void)
{
  char buff[1024];

  memset(buff, 0, sizeof(buff));
  printf("%s", shellcmd("ls", buff, sizeof(buff)));

  return 0;
}

注意:C語言調用shell命令是新建一個進程執(zhí)行的,執(zhí)行速度很慢,最好不要C、Shell混合編程。

以上這篇C語言獲取Shell返回結果的實現(xiàn)方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • OpenCV實現(xiàn)直線檢測并消除

    OpenCV實現(xiàn)直線檢測并消除

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)直線檢測并消除,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++?Qt開發(fā)之運用QJSON模塊解析數(shù)據(jù)

    C++?Qt開發(fā)之運用QJSON模塊解析數(shù)據(jù)

    JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,它易于人閱讀和編寫,也易于機器解析和生成,本文主要介紹了Qt如何運用QJson組件的實現(xiàn)對JSON文本的靈活解析功能,需要的可以參考下
    2024-01-01
  • C語言版實現(xiàn)三子棋游戲

    C語言版實現(xiàn)三子棋游戲

    這篇文章主要為大家詳細介紹了C語言版實現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言實現(xiàn)簡單班級成績管理系統(tǒng)

    C語言實現(xiàn)簡單班級成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單班級成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言sqrt函數(shù)的實例用法講解

    C語言sqrt函數(shù)的實例用法講解

    在本篇文章里小編給大家整理的是關于C語言sqrt函數(shù)的實例內容以及用法詳解,需要的朋友們可以參考下。
    2020-02-02
  • C++通用動態(tài)抽象工廠的實現(xiàn)詳解

    C++通用動態(tài)抽象工廠的實現(xiàn)詳解

    在面向對象的編程中,一般通過繼承和虛函數(shù)來提供抽象能力,下面這篇文章主要給大家介紹了關于C++通用動態(tài)抽象工廠的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • C++使用正則表達式的詳細教程

    C++使用正則表達式的詳細教程

    正則表達式是一個非常強大的工具,主要用于字符串匹配,下面這篇文章主要給大家介紹了關于C++使用正則表達式的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • C++ OpenGL實現(xiàn)三角形的繪制

    C++ OpenGL實現(xiàn)三角形的繪制

    這篇文章主要主要為大家詳細介紹了如何利用C++和OpenGL實現(xiàn)三角形的繪制,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-06-06
  • C++中指向結構體變量的指針

    C++中指向結構體變量的指針

    結構體變量的指針就是該變來那個所占據(jù)的內存段的起始地址??梢栽O一個指針變量,來指向一個結構體變量,此時該指針變量的值是結構體變量的起始地址
    2013-10-10
  • C++多文件變量解析

    C++多文件變量解析

    大家注意不要在頭文件中定義變量,在頭文件中聲明變量。定義放在對應的源文件中。其他地方只能用extern聲明
    2013-10-10

最新評論