亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

system("ls>result.txt")

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

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

#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語言調(diào)用shell命令是新建一個(gè)進(jìn)程執(zhí)行的,執(zhí)行速度很慢,最好不要C、Shell混合編程。

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

相關(guān)文章

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

    OpenCV實(shí)現(xiàn)直線檢測(cè)并消除

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

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

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

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

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

    C語言實(shí)現(xiàn)簡(jiǎn)單班級(jí)成績(jī)管理系統(tǒng)

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

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

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

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

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

    C++使用正則表達(dá)式的詳細(xì)教程

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

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

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

    C++中指向結(jié)構(gòu)體變量的指針

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

    C++多文件變量解析

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

最新評(píng)論