利用_popen(),把控制台當做文件一樣讀寫。暫時還不知道有什么特別的用處,不過能讀取控制台輸出就好了。
只讀
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
FILE* file;
char cmd[1024] = {0};
char data[1024] = {0};
memcpy(cmd,"echo %path% ",100);
if((file = _popen(cmd,"r"))!=NULL)
{
while(fgets(data,1024,file)!=NULL)
{
cout<<data<<endl;
}
_pclose(file);
}
cout<<"data len = "<<strlen(data)<<endl;
cout<<"data = "<<data<<endl;
}
寫完就讀的測試
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
FILE* file;
char cmd[1024] = {0};
char data[1024] = {0};
FILE* file2;
if((file = _popen(cmd,"w"))!=NULL)
{
while(true)
{
printf("請輸入指令:\n");
string tmp;
scanf("%s",cmd);
fputs(data,file);
if((file2 = _popen(cmd,"r"))!=NULL)
{
fgets(data,1024,file2);
cout<<"執行結果:"<<data<<endl;
fclose(file2);
}
}
}
else
{
cout<<"nothing"<<endl;
}
cout<<"data len = "<<strlen(data)<<endl;
cout<<"data = "<<data<<endl;
}