我正在学习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中.这些清单
参数由(char *)0终止;这就是被调用的函数
知道最后一个参数已经达到.在上面的例子中,
例如,“/ bin / ls”中的可执行文件将替换您的代码;在
它的主要部分,argc等于2,argv [0]等于“ls”,
和argv [1]等于“-l”.
在此功能之后,您应立即进行错误处理
码. (当execl返回时,execl总是返回-1,所以你不需要
测试一下.它只会在出现某种错误时返回.)
标签:c-3,c,linux,ubuntu,exec
来源: https://codeday.me/bug/20191008/1870293.html