具体代码如下
#include<stdio.h>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
void Test(string cmd)
{
char line[300];
FILE *fp;
string cmdPort = cmd;
// 系统调用
const char *sysCommand = cmdPort.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()
{
//向文件中写入c语言代码
string cmdPort = "echo \"#include <iostream> \\n using namespace std;\\n int main(){cout<<\\\"hellworld\\\"<<endl;return 0;}\" >>testc.cpp";
Test(cmdPort);
// 编译文件
string cmd = "g++ testc.cpp -o t";
Test(cmd);
//创建文件夹
cmd = "mkdir test";
Test(cmd);
//将可执行文件复制到文件夹中
cmd = "cp t ./test";
Test(cmd);
//执行复制到文件夹中的可执行文件
cmd = "./test/t";
Test(cmd);
return 0;
}
执行效果如图所示:
会先创建testc.cpp->编译为t ->创建test文件夹->复制t到./test/文件夹下->运行./test/t->输出hellworld