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

C++執(zhí)行Linux Bash命令的方法

 更新時間:2019年07月12日 09:48:37   作者:nudt_qxx  
今天小編就為大家分享一篇C++執(zhí)行Linux Bash命令的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

方法一:fopen()函數(shù)

#include<cstdlib>
#include<string>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int N = 300;

void Test(void){
  char line[N];
  FILE *fp;
  string cmd = "ps -ef| grep java | awk '{print $2}'";
  ////引號內(nèi)是你的linux指令
  // 系統(tǒng)調(diào)用
  const char *sysCommand = cmd.data();
  if ((fp = popen(sysCommand, "r")) == NULL) {
    cout << "error" << endl;
    return;
  }
  while (fgets(line, sizeof(line)-1, fp) != NULL){
    cout << line ;
  }
  pclose(fp);
}

int main(){
  Test();

  return 0;
}

注意:

popen函數(shù)原型: FILE * popen( const char * command,const char * type);

popen()會調(diào)用fork()產(chǎn)生子進(jìn)程,然后從子進(jìn)程中調(diào)用ps -ef| grep java | awk ‘{print $2}'來執(zhí)行參數(shù)command的指令。參數(shù)type可使用“r”代表讀取,“w”代表寫入。popen()會建立管道連到子進(jìn)程的標(biāo)準(zhǔn)輸出設(shè)備或標(biāo)準(zhǔn)輸入設(shè)備,然后返回一個文件指針。

隨后進(jìn)程便可利用此文件指針來讀取子進(jìn)程的輸出設(shè)備或是寫入到子進(jìn)程的標(biāo)準(zhǔn)輸入設(shè)備中。此外,所有使用文件指針(FILE*)操作的函數(shù)也都可以使用,除了fclose()以外。

在編寫具SUID/SGID權(quán)限的程序時請盡量避免使用popen(),popen()會繼承環(huán)境變量,通過環(huán)境變量可能會造成系統(tǒng)安全的問題。

或者,更簡單的:

方法二:system()函數(shù)

  #include <cstdlib>
  int main()
  {  
    system("ps -ef| grep java");
    //括號內(nèi)是你的linux指令
    return 0;
  }

注意:system()會調(diào)用fork()產(chǎn)生子進(jìn)程,由子進(jìn)程來調(diào)用”ps -ef| grep java ” 這個string來執(zhí)行參數(shù)string字符串所代表的命令,此命令執(zhí)行完后隨即返回原調(diào)用的進(jìn)程。所以相比于直接執(zhí)行 ps -ef| grep java , 用這個system()調(diào)用會多一個進(jìn)程id。

在編寫具有SUID/SGID權(quán)限的程序時請勿使用system(),system()會繼承環(huán)境變量,通過環(huán)境變量可能會造成系統(tǒng)安全的問題。

以上這篇C++執(zhí)行Linux Bash命令的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • C語言數(shù)組超詳細(xì)講解上

    C語言數(shù)組超詳細(xì)講解上

    數(shù)組是一組有序的數(shù)據(jù)的集合,數(shù)組中元素類型相同,由數(shù)組名和下標(biāo)唯一地確定,數(shù)組中數(shù)據(jù)不僅數(shù)據(jù)類型相同,而且在計算機(jī)內(nèi)存里連續(xù)存放,地址編號最低的存儲單元存放數(shù)組的起始元素,地址編號最高的存儲單元存放數(shù)組的最后一個元素
    2022-04-04
  • C++ 設(shè)置控制臺(命令行)窗口 光標(biāo)位置,及前背景顏色

    C++ 設(shè)置控制臺(命令行)窗口 光標(biāo)位置,及前背景顏色

    這篇文章主要介紹了C++ 設(shè)置控制臺(命令行)窗口 光標(biāo)位置,及前背景顏色,需要的朋友可以參考下
    2019-04-04
  • 詳解C語言之順序表

    詳解C語言之順序表

    這篇文章主要為大家介紹了C語言的順序表,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Qt使用OpenGL實現(xiàn)繪制3D圖形

    Qt使用OpenGL實現(xiàn)繪制3D圖形

    OpenGL是一個跨平臺的、用來渲染3D圖形的標(biāo)準(zhǔn)API,Qt對OpenGL提供了強(qiáng)大的支持,所以本文就來和大家介紹一下Qt如何使用OpenGL實現(xiàn)繪制3D圖形吧
    2023-10-10
  • C語言報錯:Buffer Overflow的原因和解決辦法

    C語言報錯:Buffer Overflow的原因和解決辦法

    Buffer Overflow是C語言中常見且危險的內(nèi)存錯誤之一,它通常在程序試圖向緩沖區(qū)(如數(shù)組或內(nèi)存塊)寫入超過其容量的數(shù)據(jù)時發(fā)生,本文將詳細(xì)介紹Buffer Overflow的產(chǎn)生原因,提供多種解決方案,需要的朋友可以參考下
    2024-07-07
  • Qt實現(xiàn)字幕無間隙滾動效果

    Qt實現(xiàn)字幕無間隙滾動效果

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實現(xiàn)字幕無間隙滾動效果,文中的實現(xiàn)過程講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-11-11
  • C++瓦片地圖坐標(biāo)轉(zhuǎn)換的實現(xiàn)詳解

    C++瓦片地圖坐標(biāo)轉(zhuǎn)換的實現(xiàn)詳解

    常見的瓦片地圖有矩形、菱形、正六邊形幾種。此文章主要討論菱形瓦片,也就是大家常說的2.5D,斜45度瓦片地圖。比如《紅警2》、《帝國時代2》都是采用這種技術(shù)
    2022-09-09
  • C++中的for-each循環(huán)使用

    C++中的for-each循環(huán)使用

    范圍循環(huán)是C++11引入的特性,用于簡化數(shù)組和容器的遍歷過程,它通過直接操作元素而不是使用索引或迭代器,范圍循環(huán)可以使用引用或const修飾符來控制元素的修改權(quán)限,適用于所有支持begin()和end()方法的容器,該循環(huán)方式不適用于未提供這些方法的C++98/03容器
    2024-09-09
  • C語言中pthread_exit和pehread_join的使用

    C語言中pthread_exit和pehread_join的使用

    pthread_exit用于強(qiáng)制退出一個線程,pthread_join用于阻塞等待線程退出,獲取線程退出狀態(tài),本文主要介紹了C語言中pthread_exit和pehread_join函數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • C語言解讀數(shù)組循環(huán)右移問題

    C語言解讀數(shù)組循環(huán)右移問題

    這篇文章主要介紹了C語言解讀數(shù)組循環(huán)右移問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

衡阳县| 安泽县| 肥乡县| 宜州市| 年辖:市辖区| 报价| 沾化县| 黎川县| 鸡东县| 阿巴嘎旗| 东丰县| 崇文区| 裕民县| 得荣县| 漳平市| 长兴县| 循化| 迭部县| 崇左市| 宁海县| 慈溪市| 东乡族自治县| 白银市| 石棉县| 瓦房店市| 崇文区| 淮阳县| 乌鲁木齐市| 剑川县| 海安县| 吉木乃县| 康定县| 大名县| 文登市| 临洮县| 延寿县| 民乐县| 阿荣旗| 资溪县| 开阳县| 治多县|