Linux系统API与库函数-3.进程控制
2022/2/14 7:13:09
本文主要是介绍Linux系统API与库函数-3.进程控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
3. 进程控制
3.1 环境变量
3.1.1 获取环境变量getenv()
帮助手册:
man 3 getenv
包含头文件:
- `#include <stdlib.h>
函数原型:
char *getenv(const char *name);
参数 | 说明 |
---|---|
name | 环境变量 |
return | 成功:环境变量的值 失败:NULL |
3.1.2 修改或添加环境变量setenv()
帮助手册:
man 3 setenv
包含头文件:
- `#include <stdlib.h>
函数原型:
int unsetenv(const char *name);
参数 | 说明 |
---|---|
name | 环境变量名 |
value | 变量值 |
overwrite | 当环境变量存在时 0:不重写 非0:重写 |
return | 成功:0 失败:-1,并设置errno |
3.1.3 删除环境变量unsetenv()
帮助手册:
man 3 unsetenv
包含头文件:
- `#include <stdlib.h>
函数原型:
char *getenv(const char *name);
参数 | 说明 |
---|---|
name | 环境变量名 |
return | 成功:0 失败:-1,并设置errno |
3.2创建子进程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 |
3.3 获得当前进程PIDgetpid()
帮助手册:
man 2 getpid
包含头文件:
#include <sys/types.h>
#include <unistd.h>
函数原型:
pid_t getpid(void)
参数 | 说明 |
---|---|
return | 返回当前进程的PID |
3.4 获得父进程PIDgetppid()
帮助手册:
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; }
3.5 执行一个文件execl()
帮助手册:
man 2 execl
包含头文件:
#include <unistd.h>
函数原型:
int execl(const char *pathname, const char *arg, ... /* (char *) NULL */);
参数 | 说明 |
---|---|
pathname | 可执行文件路径 |
arg | |
return | 成功:不返回 失败:-1,并设置errno |
3.5 执行一个文件execlp()
帮助手册:
man 2 execlp
包含头文件:
#include <unistd.h>
函数原型:
int execlp(const char *file, const char *arg, ... /* (char *) NULL */);
参数 | 说明 |
---|---|
file | 可执行文件路径 |
arg | |
return | 成功:不返回 失败:-1,并设置errno |
这篇关于Linux系统API与库函数-3.进程控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法