正如标题所说,我有一个字符串,其中包含由输入给出的bash命令(例如,command ="ls -l"),我需要从C程序执行它.我知道我可以简单地使用系统(命令),但这是一个学校练习,我不能使用系统,也不能使用popen.我想过使用exec*,但是需要解析字符串以分离命令和各种参数.是否有一个系统调用(不是系统),它允许我简单地执行带有参数的命令而不必将它们分开?提前谢谢你的答案:)
首先,这不是“bash”命令。bash 是一个外壳程序,但您拥有的是一个程序命令行。
您应该查看系统调用
为了让您有一个良好的开端,以下是您在不调用 的情况下从程序启动 shell 的方法system(…):
pid_t spawnshell(void)
{
char *argv[]={"/bin/sh", 0};
char *envp[]={0};
pid_t shpid = fork();
if(!shpid) {
execve(argv[0], argv, envp);
perror("execve");
assert(0 && "execve failed");
_exit(-1);
}
return shpid;
}
Run Code Online (Sandbox Code Playgroud)
这是一种在不解析命令及其各种参数的情况下执行命令的方法:
execl("/bin/sh", "/bin/sh", "-c", "your-command-without-parsing", 0);
Run Code Online (Sandbox Code Playgroud)