Bash脚本非常有用,可以节省大量的编程时间.那么如何在C++程序中启动bash脚本呢?此外,如果你知道如何让用户成为超级用户也会很好.谢谢!
使用该system
功能.
system("myfile.sh"); // myfile.sh should be chmod +x
#include#include // .... system("my_bash_script.sh");
唯一标准的强制实现依赖方式是使用system()
函数from stdlib.h
.
此外,如果你知道如何让用户成为超级用户也会很好.
您希望脚本以超级用户身份运行,还是希望提升C可执行文件的权限?前者可以完成,sudo
但在你可以使用前需要了解一些事情sudo
.
StackOverflow:如何在C ++中执行命令并获取命令输出?
StackOverflow :(使用fork,pipe,select):...再也没有人以困难的方式做事...
另外,如果您知道如何使用户成为超级用户,那也会很好。谢谢!
须藤 su。chmod04500。(setuid()和seteuid(),但它们要求您已经是root用户。例如chmod'ed 04 ***。)
照顾自己。这些可以打开“有趣的”安全漏洞。
根据您正在执行的操作,您可能不需要root用户。(例如:我经常使用chmod / chown / dev设备(串行端口等)(在sudo root下),因此我可以在没有root的情况下从软件中使用它们。另一方面,当加载/卸载内核模块...)
因为这是一个非常老的问题,并且没有添加此方法(除了system()
call函数之外),所以我认为包括使用C二进制本身创建shell脚本将很有用。外壳程序代码将位于file.c
源文件中。这是代码示例:
#include#include #define SHELLSCRIPT "\ #/bin/bash \n\ echo -e \"\" \n\ echo -e \"This is a test shell script inside C code!!\" \n\ read -p \"press to continue\" \n\ clear\ " int main() { system(SHELLSCRIPT); return 0; }
基本上,简而言之,我们定义了脚本名称,将脚本充实,将其括在双引号中(同时在shell代码中插入适当的转义符以忽略双引号),然后调用该脚本的名称,在此示例中,SHELLSCRIPT
使用中的system()
函数main()
。