如何在 C 程序中显式加载 shell 解释器

如何在 C 程序中显式加载 shell 解释器

我想创建一个可执行脚本这不是可读/可写

然而,由于解释器需要读取该文件,因此不可能直接执行此操作。因此我想知道是否可以将解释器与我的脚本一起显式加载到 C 程序中。

这将允许我根据我的需要设置 C 程序的权限。

答案1

您可以使用system()函数从 C 应用程序调用 shell 脚本:

system() 通过调用 /bin/sh -c command 执行 command 中指定的命令,并在命令完成后返回。在命令执行过程中,SIGCHLD 将被阻塞,SIGINT 和 SIGQUIT 将被忽略。

例子:

#include <stdlib.h>

int main(int argc, char *argv[]) {

    char* command = "\
for i in 1 2 3 4 5;\
    do echo \"$i\"; \
done";

    system(command);
    return 0;
}

跑步:

$ gcc test.c -o test
$ chmod 100 test
$ ./test
1
2
3
4
5

请记住,参数是命令字符串,因此必须以分号结束行。您还必须转义引号。

相关内容