c/c++程序内部调用shell脚本

system()

函数原型:

#include <stdlib.h>
int system(const char *str)  

脚本示例test.sh

#!/bin/sh

echo $HOME

脚本调用程序示例demo.cc

#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)  

脚本示例:
同上

脚本调用程序示例demo.cc

#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

猜你喜欢

转载自blog.csdn.net/goal_ff/article/details/86085755