我最近一直在研究Unix系统编程。我在exec
的手册页中看到了这个,
int execle(const char *path, const char *arg,..., char * const envp[]);
这个函数原型如何在中间有一个...
?这甚至无法编译!
有人可以解释这个原型吗?
我觉得这只是供用户查看,并且有不同的内部实现。这只是猜测,我不确定。
答案 0 :(得分:2)
我觉得这只是供用户查看
假设你被尾随的envp []搞糊涂了,那你就是对的。如果我们查看POSIX文档,我们会发现实际的原型应该是:
int execle(const char *, const char *, ...);
事实上,如果您在系统上咨询unistd.h
,您可能会发现某种形式:
//glibc
extern int execle (__const char *__path, __const char *__arg, ...)
__THROW __nonnull ((1, 2));
//musl
int execle(const char *, const char *, ...);
//cygwin
int _EXFUN(execle, (const char *__path, const char *, ... ));