- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为了在 C
程序中获取环境变量,可以使用以下方法:
getenv()
extern char **environ;
但除了上面提到的以外,是否使用 char *envp[]
作为 main()
的第三个参数来使环境变量被视为标准的一部分?
#include <stdio.h>
int main(int argc, char *argv[], char *envp[])
{
while(*envp)
printf("%s\n",*envp++);
}
char *envp[]
可移植吗?
最佳答案
函数getenv
是C 标准指定的唯一函数。函数putenv
, 和外部 environ
是特定于 POSIX 的。
main
参数 envp
未由 POSIX 指定,但得到广泛支持。
An alternative method of accessing the environment list is to declare a third argument to the main() function:
int main(int argc, char *argv[], char *envp[])
This argument can then be treated in the same way as environ, with the difference that its scope is local to main(). Although this feature is widely implemented on UNIX systems, its use should be avoided since, in addition to the scope limitation, it is not specified in SUSv3.
关于c - char *envp[] 是 main() 可移植的第三个参数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10321435/
我想知道缩写 envp 代表什么,例如这里: int main(int argc, char **argv, char **envp); 我还想知道 argv 中的 v 最初代表什么。 v 是“值”吗
我用 Visual Studio 创建了一个 VC++ 控制台项目,它自动生成了这个函数: int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { .
我正在尝试使用 setenv() 设置新的环境变量。 但我注意到 setenv() 函数仅在我使用环境“extern char **environ”时设置我的新环境变量 但我想使用 main() 的参
在FastCGI中,有一个struct FCGX_Request的指针envp。这是代码: typedef struct FCGX_Request { int requestId;
我的问题是我不理解某一行代码 当这个 envp 参数出现在 main 上时,我正在对一个 crackme 进行逆向工程,然后程序开始使用它,这让我不明白如何解决 crackme 的第二部分(我正在使用
我已经使用以下命令设置了一个环境变量: QUERY_STRING='This is my query string' 这是我的程序: #include #include void main (in
为了在 C 程序中获取环境变量,可以使用以下方法: getenv() extern char **environ; 但除了上面提到的以外,是否使用 char *envp[] 作为 main() 的第三
我学习 BPF 是为了自己的乐趣,我很难弄清楚如何从传递给我的 eBPF 程序的上下文中读取 argv 和 envp sys_enter_execve 我将在这里展示我的 BPF 程序,然后在稍后更详
我编写了一个程序来计算传递给 execve 系统调用的参数的总大小。 我已经用最大参数大小测试了这个程序,预计“Argument list too long”错误只会在超过 ARG_MAX 限制时发生
例如execve(2),根据 posix,它具有以下原型(prototype) [1]: int execve(const char *path, char *const argv[], char *
我正在将 C 程序链接到 NASM 可执行文件。汇编文件调用链接的C程序中的main函数 virus: infect.c virus.o $(CC) $(LFLAGS) $^ -o $@ v
int execle(const char *path, const char *arg, ..., char * const envp[]); 在Linux中使用的上述函数原型(prototype)
背景: 我知道出于安全原因,带有 setuid 的父程序不能将 LD_LIBRARY_PATH 保留为 env 的一部分,因此任何子进程也不会“看到”LD_LIBRARY_PATH。 上下文: 我的父
我是一名优秀的程序员,十分优秀!