91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么執行LinuxBash命令

發布時間:2021-07-06 17:39:06 來源:億速云 閱讀:251 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關C++中怎么執行LinuxBash命令,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

方法一:fopen()函數

#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}'";  ////引號內是你的linux指令  // 系統調用  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函數原型: FILE * popen( const char * command,const char * type);

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

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

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

或者,更簡單的:

方法二:system()函數

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

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

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

上述就是小編為大家分享的C++中怎么執行LinuxBash命令了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

开化县| 秦安县| 小金县| 许昌县| 自治县| 历史| 宿松县| 安溪县| 鄂托克前旗| 阳高县| 巴里| 藁城市| 黄陵县| 大英县| 漠河县| 阳朔县| 山东| 磐石市| 资溪县| 琼结县| 宝坻区| 巨野县| 南部县| 新津县| 通江县| 雷波县| 通城县| 盐津县| 潮安县| 平度市| 绍兴市| 高阳县| 定西市| 罗定市| 辽阳县| 特克斯县| 河北区| 新津县| 句容市| 台湾省| 杭州市|