我使用execv
而不是execl
。为了使用execv
,我创建了一个数组,并将我用于execl
的参数放入其中。然后我将这个数组放入execv
中。
我知道我必须使用参数数组来使用execv
,但为什么呢?execl
和execv
之间有什么区别?
除了参数格式之外,它们没有任何区别。它们最终都会调用相同的底层系统调用execve()
。
execve()
系统调用(以及 execv()
)将参数作为数组传递。 execl()
只是提供了一个便利,以防您有固定数量的参数,让您避免设置数组所带来的麻烦。execl()
将在自身内部存储函数参数,然后进行系统调用。如果您自己设置参数数组,则无需使用 execl()
。 - mark4o