最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文掌握C++ 智能指針全部用法

    一文掌握C++ 智能指針全部用法

    學(xué)習(xí)智能指針有很多好處,可以幫我們C++程序員管理動(dòng)態(tài)分配的內(nèi)存的,它會(huì)幫助我們自動(dòng)釋放new出來的內(nèi)存,從而避免內(nèi)存泄漏,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • c++網(wǎng)絡(luò)編程下Linux的epoll技術(shù)和Windows下的IOCP模型

    c++網(wǎng)絡(luò)編程下Linux的epoll技術(shù)和Windows下的IOCP模型

    c++ 網(wǎng)絡(luò)編程LINUX-epoll/windows-IOCP下socket opoll函數(shù)用法 優(yōu)于select方法的epoll 以及windows下IOCP 解決多進(jìn)程服務(wù)端創(chuàng)建進(jìn)程資源浪費(fèi)問題,感興趣的小伙伴一起來學(xué)習(xí)吧
    2021-08-08
  • C語言判斷字符是否為可打印字符的方法

    C語言判斷字符是否為可打印字符的方法

    這篇文章主要介紹了C語言判斷字符是否為可打印字符的方法,分別為isprint()函數(shù)和isgraph()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++11?condition_variable條件變量的用法說明

    C++11?condition_variable條件變量的用法說明

    這篇文章主要介紹了C++11?condition_variable條件變量的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++實(shí)現(xiàn)獲取指定代碼段的cpu占用

    C++實(shí)現(xiàn)獲取指定代碼段的cpu占用

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)獲取指定代碼段的cpu占用的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2023-12-12
  • C/C++?Qt?TableDelegate?自定義代理組件使用詳解

    C/C++?Qt?TableDelegate?自定義代理組件使用詳解

    TableDelegate自定義代理組件的主要作用是對(duì)原有表格進(jìn)行調(diào)整,本文主要介紹了QT中TableDelegate?自定義代理組件的使用教程,感興趣的朋友可以了解一下
    2021-12-12
  • C++11學(xué)習(xí)之包裝器解析

    C++11學(xué)習(xí)之包裝器解析

    function包裝器?也叫作適配器。C++中的function本質(zhì)是一個(gè)類模板,也是一個(gè)包裝器。本文就來和大家聊聊我們?yōu)槭裁葱枰猣unction呢
    2023-02-02
  • C++文件依存關(guān)系介紹

    C++文件依存關(guān)系介紹

    如果現(xiàn)在你做的C++項(xiàng)目(課題)包含的文件沒有超過1000個(gè),你可以選擇略過此文,不過建議繼續(xù)瀏覽
    2013-01-01
  • QT的QWebEngineView類知識(shí)點(diǎn)詳細(xì)介紹

    QT的QWebEngineView類知識(shí)點(diǎn)詳細(xì)介紹

    QWebEngineView是Qt框架中的組件,基于Chromium內(nèi)核,支持HTML5、CSS3、JavaScript等Web技術(shù),適用于嵌入網(wǎng)頁內(nèi)容到Qt應(yīng)用程序,它提供了豐富的接口如加載、導(dǎo)航、與JavaScript交互等,并支持信號(hào)槽機(jī)制處理各種網(wǎng)頁事件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • c++中的volatile和variant關(guān)鍵字詳解

    c++中的volatile和variant關(guān)鍵字詳解

    大家好,本篇文章主要講的是c++中的volatile和variant關(guān)鍵字詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01

最新評(píng)論

遂宁市| 拉萨市| 正镶白旗| 微博| 襄垣县| 安仁县| 耒阳市| 昌平区| 揭阳市| 哈巴河县| 乳山市| 道孚县| 溧水县| 福清市| 昌都县| 建瓯市| 江永县| 鸡东县| 通河县| 罗源县| 兰西县| 上栗县| 克山县| 韩城市| 云安县| 新绛县| 马边| 修文县| 汕尾市| 修水县| 楚雄市| 尚义县| 深圳市| 胶南市| 图木舒克市| 黄陵县| 应城市| 阜新| 竹溪县| 澎湖县| 永春县|