【发布时间】:2017-07-26 06:12:04
【问题描述】:
execve:如何使用多个命令而不是单个命令来初始化 char *argv[ ]?
如果要执行4条命令,可以用下面的语句吗?
char *argv[4][ ] = { {...}, {...}, {...} };
要使用 execve 执行它们,我可以使用 var 从 1 到 4 的循环吗?
【问题讨论】:
-
exec系列函数只能执行 one 程序。您不能使用它们来执行多个程序。尤其不是通过argv数组,exec不会使用它来查找要执行的程序。 -
您将不得不使用循环。
execve将只执行第一个程序并将其他命令视为第一个程序的参数。你是对的,你必须使用循环。 -
哦,记得在循环中给
fork一个新进程,因为成功的execve调用不会返回。 -
执行一批命令的工具是 shell,所以你可以
execve()/bin/sh使用适当的参数列表 --- 或者如前所述,自己做 shell 的工作(@ 987654331@、execve()和wait()... 或posix_spawn()和wait()) -
@Someprogrammerdude,更好的说法是是一个系统调用,旨在将程序映像加载到内存中并开始执行它。恕我直言。