Linux服务器编程——Linux系统编程之进程
来源:互联网 发布:qt5.8连接mysql数据库 编辑:程序博客网 时间:2024/06/05 08:12
进程的基本概念
参考小何讲进程
环境变量
Linux是多任务多用户的开源操作系统。环境变量:操作系统中用来制定操作系统运行环境的一些参数。通常具有以下特征:
1、字符串
2、统一的格式 名=值[;值]
3、用来描述进程环境信息
常见的环境变量
PATH:可执行文件的路径
输出方式 echo $PATH
SHELL:记录当前目录解析器
HOME:当前home目录
LANG:语言
TERM:终端类型
注意:要在C语言程序中使用环境变量,必须extern char **environ;
环境变量操作函数
getenv函数作用:获取环境变量值头文件#include <stdlib.h>函数原型char* getenv(const char* name)char* secure_getenv(const char* name) _GNU_SOURCEsetenv函数作用:设置或添加环境变量值 头文件#include <stdlib.h>函数原型int setenv(const char* name,const char* value, int overwrite)overwrite: 非0 改变 0 不改变int unsetenv(const char* name)
进程控制
fork函数作用:创建子进程头文件#include <unistd.h>函数原型pid_t fork(void)返回值:1、返回子进程ID >0 (父进程)2、0 创建成功 (子进程)
getpid/getppid函数作用:得到当前进程的ID号头文件#include <sys/types.h>#include <unistd.h>函数模型pid_t getpid(void)pid_t getppid(void)
注意:父子进程之间共享的只有文件描述符与mmap建立的映射区
exec函数族调用exec函数不会创建新进程。int execl(const char* path, const char* arg,...)作用:加载一个进程,通过路径名path:路径arg:参数int execlp(const char* file, const char* arg,...)作用:加载一个进程,借助PAYH环境变量,通常用来执行系统命令如ls,cat返回值:-1,失败; 无返回,成功参数file:要加载的程序的名字参数arg:argv[0]程序名最后一定要加 NULL 参数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 execve(const char * path, char* const envp[])
回收子进程
孤儿进程:父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,称为init进程领养孤儿进程
僵尸进程:进程终止,父进程尚未回收,子进程残留资源放于内核,变成僵尸进程。不能用kill终止僵尸进程。
wait函数作用1、阻塞等待子进程退出2、回收子进程残留资源3、获取子进程结束状态头文件#include <sys/types.h>#include <sys/wait.h>函数原型pid_t wait(int *status);status:传入参数,保存子进程的退出状态 1、WIFEXITED(status) 非0 进程正常结束 WEXITSTATUS(status) 获取进程退出状态 2、WIFSIGNALED(status) 非0 进程异常终止 WTERMSIG(status) 取得使进程终止那个信号的编号 3、WIFSTOPPED(status) 非0 进程处于暂停状态 WSTOPSIG(status) 取得使进程暂停的那个信号的编号 WIFCONTINUED(status) 真 进程暂停后已经继续执行返回值:>0 清理掉的子进程ID -1 失败pid_t waitpid(pid_t pid, int* status ,int options)作用:同wait 但可以指定pid进程清理,可以不阻塞pid: >0 回收指定进程 -1 回收所有进程 相当于wait 0 回收和调用waitpid一个组的所有子进程 <-1 回收指定进程组内的任一子进程返回0:参数3为WNOHANG,且子进程正在运行
阅读全文
0 0
- Linux服务器编程——Linux系统编程之进程
- Linux服务器编程——Linux系统编程之进程通信
- Linux系统编程——特殊进程之僵尸进程
- Linux系统编程——特殊进程之孤儿进程
- Linux系统编程——特殊进程之守护进程
- Linux系统编程——特殊进程之僵尸进程
- Linux系统编程——特殊进程之孤儿进程
- Linux系统编程——特殊进程之守护进程
- Linux系统编程——特殊进程之僵尸进程
- Linux系统编程——特殊进程之僵尸进程
- Linux系统编程——特殊进程之僵尸进程
- Linux系统编程——特殊进程之孤儿进程
- Linux系统编程——特殊进程之守护进程
- Linux系统编程——特殊进程之僵尸进程
- Linux系统编程——特殊进程之孤儿进程
- linux系统编程之进程
- Linux服务器编程——Linux系统编程1
- linux 系统编程——进程管理
- 使用Fast RCNN跑通Demo
- XStream 通过对象流进行对象与xml的序列化和反序列化
- cxfSpring集合例子
- 店铺卖家的描述信息爬取
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core
- Linux服务器编程——Linux系统编程之进程
- 工作流基本概念__了解就行
- angular js基础点滴
- Spark:Scala实现常用的Transformation操作
- java 如何将十六进制字符串转换为 float 符点型?相互转换
- Android_RxBus传值
- 13、ES6 Iterator(遍历器)的概念
- android webview种植cookie要领
- stm32_004_stm32f103内部结构图