亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

嵊泗县| 建德市| 安塞县| 浑源县| 潍坊市| 嵩明县| 年辖:市辖区| 阳江市| 美姑县| 崇明县| 郧西县| 西宁市| 汶上县| 新沂市| 鲁甸县| 珲春市| 馆陶县| 钦州市| 高陵县| 潞西市| 丽江市| 长阳| 平定县| 晋江市| 辉县市| 富民县| 西林县| 临清市| 会昌县| 大竹县| 新乡县| 沧州市| 高阳县| 车险| 甘洛县| 四会市| 虞城县| 深州市| 榆中县| 道孚县| 台湾省|