当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何从C++程序运行bash脚本》经验,为你挑选了5个好方法。

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



1> Mehrdad Afsh..:

使用该system功能.

system("myfile.sh"); // myfile.sh should be chmod +x


`system()`必须谨慎使用.根据它的手册页:_不要使用具有set-user-ID或set-group-ID权限的程序中的`system()`,因为某些环境变量的奇怪值可能会被用来破坏系统完整性.使用`exec(3)`函数系列代替,而不是`execlp(3)`或`execvp(3)`.实际上,`system()`在具有set-user-ID或set-group-ID权限的程序中不会在`/ bin/sh`是bash版本2的系统上正常工作,因为bash 2在启动时删除了特权._
@MehrdadAfshari:这个怎么样.如果脚本在当前目录中,则应使用`./`.如果它在你的`$ PATH`中的某个地方,请不要使用`./`.(`.`可能不应该在`$ PATH`中,绝对不应该在`$ PATH`的前面.)
谢谢,但你忘了包含这个:system("./ myfile.sh");
当前目录`.`*不应该在你的`$ PATH`中.

2> rlbond..:
#include 
#include 

// ....


system("my_bash_script.sh");


如果bash脚本将某些文本回显给tty怎么办?例如,如果它是一只"猫"呢?c程序可以输出吗?

3> dirkgently..:

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

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

您希望脚本以超级用户身份运行,还是希望提升C可执行文件的权限?前者可以完成,sudo但在你可以使用前需要了解一些事情sudo.



4> Mr.Ree..:

StackOverflow:如何在C ++中执行命令并获取命令输出?

StackOverflow :(使用fork,pipe,select):...再也没有人以困难的方式做事...

另外,如果您知道如何使用户成为超级用户,那也会很好。谢谢!

须藤 su。chmod04500。(setuid()和seteuid(),但它们要求您已经是root用户。例如chmod'ed 04 ***。)

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

根据您正在执行的操作,您可能不需要root用户。(例如:我经常使用chmod / chown / dev设备(串行端口等)(在sudo root下),因此我可以在没有root的情况下从软件中使用它们。另一方面,当加载/卸载内核模块...)



5> Yokai..:

因为这是一个非常老的问题,并且没有添加此方法(除了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()

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有