【发布时间】:2021-11-30 04:55:50
【问题描述】:
我看到execl的以下用法:
execl("/bin/ls", "ls", "-l", "-R", "-a", NULL);
我想知道为什么第一个参数是ls,它已经在第一个参数中了为什么还要加上呢?
可以为 NULL 吗?有什么影响?
【问题讨论】:
-
我想知道你为什么没有看到它的文档,它已经在那里了,为什么还要再问呢?可以试试吗?有什么影响?
-
pathname之后的第一个参数是程序本身(在这种情况下为/bin/ls)将在argv[0]中看到的内容。如果您将其设为NULL,它将充当argv数组中的终止符。 -
可执行文件名与
argv[0]传递的内容之间不需要任何关系。使用execl("/bin/ls", "elephant", "-l", "does-not-exist", (char *)0);是合法的(但很奇怪)。当我运行它时,我收到错误消息elephant: does-not-exist: No such file or directory。ls程序被告知它的名字是elephant,它在错误消息中使用了它。