exec()函数有很多

久而久之,程序员创建了很多不同版本的exec()。每个版本的名字都有一些细微差别,而且有各自的参数。虽然exec()函数的版本众多,但可以分为两组:列表函数和数组函数。

exec()函数有很多 - 图1

列表函数:execl()、execlp()、execle()

列表函数以参数列表的形式接收命令行参数:

  • 程序。

第一个参数告诉exec()函数将运行什么程序。对execl()execle()来说,它是程序的完整路径名;对execlp()来讲就是命令的名字,execlp()会根据它去查找程序。

  • 命令行参数。

你需要依次列出想使用的命令行参数。别忘了,第一个命令行参数必须是程序名,也就是说列表版exec()的前两个参数是相同字符串。

  • NULL。

没错,需要在最后一个命令行参数后加上NULL,告诉函数没有其他参数了。

  • 环境变量(如果有的话)。

如果调用了以…e()结尾的exec()函数,还可以传递环境变量数组,像“POWER=4”、“SPEED=17”、“PORT=OPEN”……那样的字符串数组。

exec()函数有很多 - 图2

exec()函数有很多 - 图3

命令行参数之间的空格会把MinGW弄糊涂。

如果把“I like”和“turles”这两个参数传给exec(),MinGW程序可能会发送三个参数:“I”、“like”和“turtle”。