利用_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;
}