getenv()
帮助手册:
man 3 getenv
包含头文件:
- `#include <stdlib.h>
函数原型:
char *getenv(const char *name);
参数 | 说明 |
---|---|
name | 环境变量 |
return | 成功:环境变量的值 失败:NULL |
setenv()
帮助手册:
man 3 setenv
包含头文件:
- `#include <stdlib.h>
函数原型:
int unsetenv(const char *name);
参数 | 说明 |
---|---|
name | 环境变量名 |
value | 变量值 |
overwrite | 当环境变量存在时 0:不重写 非0:重写 |
return | 成功:0 失败:-1,并设置errno |
unsetenv()
帮助手册:
man 3 unsetenv
包含头文件:
- `#include <stdlib.h>
函数原型:
char *getenv(const char *name);
参数 | 说明 |
---|---|
name | 环境变量名 |
return | 成功:0 失败:-1,并设置errno |
fork()
帮助手册:
man 2 fork
包含头文件:
#include <sys/types.h>
#include <unistd.h>
函数原型:
pid_t fork(void);
刚
fork()
后:
- 父子进程相同处:
– 全局变量,data, text, 栈,堆,环境变量,用户ID,宿主目录,进程工作目录,信号处理方式…- 父子进程不相同处:
– 进程ID, fork返回值,父进程ID, 进程运行时间,闹钟(定时器),未决信号集注:父子进程间数据
读时共享,写时复制
,父子进程不共享全局变量
参数 | 说明 |
---|---|
return | 成功:子进程:0;父进程:子进程PID 失败:-1,并设置errno |
getpid()
帮助手册:
man 2 getpid
包含头文件:
#include <sys/types.h>
#include <unistd.h>
函数原型:
pid_t getpid(void)
参数 | 说明 |
---|---|
return | 返回当前进程的PID |
getppid()
帮助手册:
man 2 getppid
包含头文件:
#include <sys/types.h>
#include <unistd.h>
函数原型:
pid_t getppid(void)
参数 | 说明 |
---|---|
return | 返回父进程的PID |
示例:
#include <stdio.h> #include <unistd.h> int main(int argc, char* argv[]) { printf("Begin...\n"); pid_t pid = fork(); if(pid < 0) { perror("fork error:"); return -1; } if(pid == 0) printf("This is child process, PID = %d, PPID = %d\n", getpid(), getppid()); if(pid > 0) printf("This is parent process, pid = %d, PID = %d, PPID = %d\n", pid, getpid(), getppid()); printf("End...\n"); return 0; }
execl()
帮助手册:
man 2 execl
包含头文件:
#include <unistd.h>
函数原型:
int execl(const char *pathname, const char *arg, ... /* (char *) NULL */);
参数 | 说明 |
---|---|
pathname | 可执行文件路径 |
arg | |
return | 成功:不返回 失败:-1,并设置errno |
execlp()
帮助手册:
man 2 execlp
包含头文件:
#include <unistd.h>
函数原型:
int execlp(const char *file, const char *arg, ... /* (char *) NULL */);
参数 | 说明 |
---|---|
file | 可执行文件路径 |
arg | |
return | 成功:不返回 失败:-1,并设置errno |