我正在学习 linux 编程,遇到了 exec 函数,它非常有用。但问题是 exec 函数参数非常困惑,我无法理解哪个参数用于什么目的。在下面的代码中,execl()
函数是从通过 fork 创建的子对象调用的()
,execl()
中最后一个参数(NULL
)的作用是什么?
execl("/bin/ls","ls","-l",NULL);
如果有人能解释NULL
参数和其他参数的目的是什么以及exec()
系列函数参数的目的,那将是一个很大的帮助给我!
最佳答案
创建未定义的行为。这不是对 execl
的合法调用。一个
正确的调用可能是:
execl( "/bin/ls", "ls", "-l", (char*)0 );
最后一个参数必须是(char*)0
,否则你有未定义的行为。
第一个参数是可执行文件的路径。以下
参数出现在执行程序的 argv
中。这些 list
参数由 (char*)0
终止;这就是被调用函数的方式
知道已经到达最后一个参数。在上面的例子中,
例如,"/bin/ls"
中的可执行文件将替换您的代码;在
它的 main
,argc
等于 2,argv[0]
等于 "ls"
,
和 argv[1]
等于 "-l"
。
紧接着这个函数,你应该有错误处理
代码。 (execl
总是返回 -1,当它返回时,所以你不需要
测试它。它只会在出现某种错误时返回。)
关于c++ - Ubuntu 中的 execl() 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12677120/