【问题标题】:Meaning of char *arge[] as third parameter in main in C [duplicate]char *arge[] 作为 C 中 main 中的第三个参数的含义 [重复]
【发布时间】:2019-10-06 09:16:33
【问题描述】:

char * arge[]在C程序主函数中作为第三个参数是什么意思?

#include <stdio.h>
#include <unistd.h>

int main(int argc, char const *argv[], char *arge[]) {
  int i;
  char **p;
  printf("pid = %d\n", getpid());
  printf("argc =  %d\n", argc);
  for (i = 0; i < argc; i++)
  printf("%s\n",argv[i] );
  p=arge;
  while (*p != NULL)
  printf("%s\n", *p++);
  execve("prog2", argv, arge);
  return 0;
}

提到的“prog2”就是这个:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char const *argv[], char *arge[]) {
  printf("pid = %d\n", getpid());
  printf("argc = %d\n", argc);
  for(;;);
}

如果你执行代码,你会得到所有的环境变量。

【问题讨论】:

标签: c main


【解决方案1】:

第三个参数是环境变量。这里有更深入的回答:What's the use of the third, environment variable argument to the C++ main()?

获取环境变量作为 main 的第三个参数似乎在 C 和 POSIX 中都没有指定,因此它可能不可移植:Is char *envp[] as a third argument to main() portable

【讨论】:

  • 虽然我学到了一些新的(或更好的旧),但你应该标记为重复而不是回答。
  • 回答问题的链接没有提到它是扩展而不是 C 或 POSIX,但我认为这是重要信息。
  • 我同意这个信息很重要。但是,您发现的 Q/A 对比您想象的要好。评论和“其他”答案确实提供了这些信息。
  • 或者另一个建议的副本更符合您的口味。
  • @mort 你应该是对的,这是一个环境变量,只是给出的名称不同。 "argE" E 喜欢环境..
猜你喜欢
  • 2012-05-06
  • 2012-10-26
  • 2015-01-28
  • 2011-05-09
  • 1970-01-01
  • 2020-09-29
  • 2013-10-12
  • 1970-01-01
  • 2011-01-31
相关资源
最近更新 更多