在C++中,可以使用popen
函數(shù)來創(chuàng)建一個新的進程,并且通過管道與其進行通信。popen
函數(shù)的原型如下:
FILE* popen(const char* command, const char* mode);
其中,command
參數(shù)是要執(zhí)行的命令,mode
參數(shù)是打開文件的模式("r"表示只讀模式,"w"表示只寫模式)。popen
函數(shù)會返回一個指向FILE
類型的指針,可以使用這個指針來讀取或?qū)懭胱舆M程的輸入輸出。
下面是一個簡單的示例,演示如何使用popen
函數(shù)執(zhí)行一個命令并讀取其輸出:
#include <iostream>
#include <stdio.h>
int main() {
FILE* pipe = popen("ls", "r");
if (!pipe) {
std::cerr << "popen failed!" << std::endl;
return 1;
}
char buffer[128];
while (!feof(pipe)) {
if (fgets(buffer, 128, pipe) != NULL) {
std::cout << buffer;
}
}
pclose(pipe);
return 0;
}
在這個示例中,我們使用popen("ls", "r")
來執(zhí)行ls
命令并讀取其輸出,然后使用fgets
函數(shù)逐行讀取子進程的輸出,并將其打印到標準輸出中。最后,我們使用pclose
函數(shù)關(guān)閉管道。