国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

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

2020-01-26 13:26:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

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

或者,更簡(jiǎn)單的:

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

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

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

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

以上這篇C++執(zhí)行Linux Bash命令的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临西县| 轮台县| 梁河县| 喀喇| 澜沧| 福安市| 三明市| 昌乐县| 南部县| 保德县| 诸暨市| 简阳市| 仲巴县| 和田县| 尼木县| 曲水县| 桐梓县| 永寿县| 固始县| 余姚市| 顺义区| 湘阴县| 孟连| 玉环县| 绥江县| 根河市| 莱州市| 永宁县| 积石山| 正镶白旗| 郴州市| 屏东市| 中西区| 姚安县| 古田县| 玛纳斯县| 西华县| 台山市| 岐山县| 南郑县| 香河县|