通过execve在两个进程间传递环境变量

进程1:execve
进程2:hello

execve.h 的代码如下:

#include <stdio.h>
#include <stdlib.h>

#include <unistd.h>

/*
     #include <unistd.h>
     execve是系统调用,下面的函数是execve的库函数

     extern char **environ;

     int execl(const char *path, const char *arg, ...);
     int execlp(const char *file, const char *arg, ...);
     int execle(const char *path, const char *arg,
                ..., char * const envp[]);
     int execv(const char *path, char *const argv[]);
     int execvp(const char *file, char *const argv[]);
*/

int main(void)
{
    printf("pid: %d\n", getpid());

    //
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows系统中,可以通过以下方式设置进程环境变量: 1. 使用SetEnvironmentVariable函数设置环境变量。该函数的原型如下: ``` BOOL SetEnvironmentVariable( LPCTSTR lpName, LPCTSTR lpValue ); ``` 其中,lpName参数指定要设置的环境变量的名称,lpValue参数指定要设置的环境变量的值。如果函数调用成功,则返回非零值。 2. 使用CreateProcess函数创建进程时,通过lpEnvironment参数设置环境变量。该参数是一个指向以NULL结尾的字符串数组的指针,每个字符串都表示一个环境变量,格式为“变量名=变量值”。例如: ``` TCHAR env[] = TEXT("PATH=C:\\Windows\\System32"); LPCTSTR envp[] = { env, NULL }; CreateProcess(NULL, cmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); ``` 上面的代码设置了PATH环境变量为C:\Windows\System32,并将环境变量数组envp作为CreateProcess函数的lpEnvironment参数传递给了新创建的进程。 在Linux系统中,可以通过以下方式设置进程环境变量: 1. 使用setenv函数设置环境变量。该函数的原型如下: ``` int setenv(const char *name, const char *value, int overwrite); ``` 其中,name参数指定要设置的环境变量的名称,value参数指定要设置的环境变量的值,overwrite参数指定是否覆盖已经存在的同名环境变量。如果函数调用成功,则返回0。 2. 使用execve函数创建进程时,通过envp参数设置环境变量。该参数是一个指向以NULL结尾的字符串数组的指针,每个字符串都表示一个环境变量,格式为“变量名=变量值”。例如: ``` char *envp[] = { "PATH=/usr/bin:/usr/local/bin", NULL }; execve("/bin/ls", argv, envp); ``` 上面的代码设置了PATH环境变量为/usr/bin:/usr/local/bin,并将环境变量数组envp作为execve函数的envp参数传递给了新创建的进程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值