execl和execv有什么区别?

15

我使用execv而不是execl。为了使用execv,我创建了一个数组,并将我用于execl的参数放入其中。然后我将这个数组放入execv中。

我知道我必须使用参数数组来使用execv,但为什么呢?execlexecv之间有什么区别?


1
可能是在C和C++中使用exec的不同版本有哪些?的重复问题。 - jww
1个回答

14

除了参数格式之外,它们没有任何区别。它们最终都会调用相同的底层系统调用execve()


我们为什么需要改变参数的格式呢?我的意思是,如果它们都做同样的事情。 - Ahmet Tanakol
2
execve() 系统调用(以及 execv())将参数作为数组传递。 execl() 只是提供了一个便利,以防您有固定数量的参数,让您避免设置数组所带来的麻烦。execl() 将在自身内部存储函数参数,然后进行系统调用。如果您自己设置参数数组,则无需使用 execl() - mark4o
这是一个例子:https://dev59.com/2I7da4cB1Zd3GeqP_lTc#32142863 - mig001

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接