繁体   English   中英

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

[英]How to run a bash script from C++ program

Bash脚本非常有用,可以节省大量的编程时间。 那么如何在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 :(使用fork,pipe,select):......没人做任何困难的事情......

此外,如果你知道如何让用户成为超级用户也会很好。 谢谢!

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

照顾自己。 这些可以打开“有趣”的安全漏洞......

根据您的工作,您可能不需要root。 (例如:我经常chmod / chown / dev设备(串口等)(在sudo root下 )所以我可以从我的软件中使用它们而不是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代码中的双引号),然后调用该脚本的名称,在这个例子中是SHELLSCRIPT使用main()system()函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM