在POSIX中,main(void)可以恢复命令行参数吗?

7 c posix command-line-arguments

在C中,int main(int argc, char *argv[])真的需要接收程序参数吗?换句话说,在使用签名定义main函数时int main(void),是否可以仅使用POSIX接口恢复程序参数?

我觉得我错过了一些东西,看到了:

  • POSIX定义了多个接口来检索其他特定于流程的信息.例如,有环境变量的接口(可以说是继承自C99,但也扩展了类似的功能unsetenv())和主机标识(gethostid()).
  • 特定操作系统定义检索命令行参数的"全局"方法.例如,Windows提供GetCommandLineWCommandLineToArgvW功能,HP-UX提供全局变量__argc_value__argv_value.Linux有/proc/self/cmdline,可以解析为argvargc.

Pet*_*ter 4

POSIX 规范不包括可以检索命令行参数的函数。所有指定的函数本质上都需要main()编排传递argcargv解析。

POSIX 规范(IEEE 1003.1,2013 版 - 我撰写本文时的当前版本)有一个部分描述了标准实用程序(在“Shell 和实用程序”卷中进行了描述)使用的命令行语法。然而,这些实用程序自然会使用 POSIX 函数,因此将通过main(argc, argv)调用它们的函数来实现。