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

时间:2015-11-17 12:10:08

标签: c posix command-line-arguments

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

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

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

1 个答案:

答案 0 :(得分:4)

POSIX规范不包含可以检索命令行参数的函数。所有指定的函数基本上都需要main()来协调传递argcargv以进行解析。

POSIX规范(IEEE 1003.1,2013版本 - 我写的当前版本)有一节描述标准实用程序使用的命令行语法(在“Shell和实用程序”卷中描述)。但是,这些实用程序 - 当然足够 - 会使用POSIX函数,因此可以通过调用它们的main(argc, argv)来实现。