Meh*_*ari 61
使用该system
功能.
system("myfile.sh"); // myfile.sh should be chmod +x
Run Code Online (Sandbox Code Playgroud)
rlb*_*ond 17
#include <stdio.h>
#include <stdlib.h>
// ....
system("my_bash_script.sh");
Run Code Online (Sandbox Code Playgroud)
唯一标准的强制实现依赖方式是使用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 <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;
}
Run Code Online (Sandbox Code Playgroud)
基本上,简而言之,我们定义了脚本名称,将脚本充实,将其括在双引号中(同时在shell代码中插入适当的转义符以忽略双引号),然后调用该脚本的名称,在此示例中,SHELLSCRIPT
使用中的system()
函数main()
。
归档时间: |
|
查看次数: |
103565 次 |
最近记录: |