如何从C ++程序运行一个bash脚本

Bash脚本非常有用,可以节省大量的编程时间。 那么如何在C ++程序中启动一个bash脚本呢? 另外,如果你知道如何让用户成为超级用户,那也不错。 谢谢!

Solutions Collecting From Web of "如何从C ++程序运行一个bash脚本"

使用system功能。

 system("myfile.sh"); // myfile.sh should be chmod +x 
 #include <stdio.h> #include <stdlib.h> // .... system("my_bash_script.sh"); 

唯一的标准强制实现依赖方式是使用stdlib.hsystem()函数。

另外,如果你知道如何让用户成为超级用户,那也不错。

你想让脚本以超级用户身份运行,还是要提升C可执行文件的权限? 前者可以用sudo完成,但是在使用sudo之前,你需要知道一些事情。

StackOverflow:如何执行一个命令并得到在C + +的命令输出?

StackOverflow:(使用叉,管,选择):…没有人更难以做的事情…

另外,如果你知道如何让用户成为超级用户,那也不错。 谢谢!

须藤。 苏。 chmod 04500.(setuid()&seteuid(),但是它们要求你已经是root了,E .g。chmod'ed 04 ***。)

保重。 这些可以打开“有趣”的安全漏洞

根据你在做什么,你可能不需要root。 (例如:我会经常chmod / chown / dev设备(串口等)(在sudo根目录下 ),这样我就可以从我的软件中使用它们而不需要root了。另一方面,加载/卸载内核模块…)

由于这是一个相当古老的问题,并且这个方法还没有被添加(除了system()调用函数),我想包括用C二进制本身创建shell脚本将是有用的。 shell代码将被放置在file.c源文件中。 这是一个代码示例:

 #include <stdio.h> #include <stdlib.h> #define SHELLSCRIPT "\ #/bin/bash \n\ echo -e \"\" \n\ echo -e \"This is a test shell script inside C code!!\" \n\ read -p \"press <enter> to continue\" \n\ clear\ " int main() { system(SHELLSCRIPT); return 0; } 

基本上,(双关语),我们定义脚本名称,充实脚本,用双引号括起来(当插入适当的转义忽略在shell代码中的双引号),然后调用该脚本的名称,这在这个例子中是使用main()system()函数的SHELLSCRIPT