system()
函数原型:
#include <stdlib.h>
int system(const char *str)
#!/bin/sh
echo $HOME
#include <stdlib.h>
#include <iostream>
#include <string>
int main()
{
std::string res;
res = system("./test.sh");
std::cout << res << '\n';
return 0;
}
特点:
1.两种错误返回值:
-1 system()进行fork子进程失败;
127 执行脚本或shell命令失败
2.无法在程序中直接获取到shell命令的返回内容
popen()
函数原型:
#include <stdio.h>
FILE* popen(char *command,char *type)
脚本示例:
同上
#include <stdio.h> //popen()
#include <string.h> //memset()
int main()
{
FILE *fp;
char buffer[80];
memset(buffer, 0x00, sizeof(buffer));
fp = popen("./test.sh", "r");
fgets(buffer, sizeof(buffer), fp);
printf("[%s]\n", buffer);
pclose(fp);
return 0;
}
特点:
1. 用 创建管道 的 方式 启动 一个 进程, 并调用 shell
2. 可在程序内部获取shell执行后的返回内容
参考博客 :https://blog.csdn.net/luokehua789789/article/details/53117904