Linux进程
来源:互联网 发布:淘宝交易金额冻结 编辑:程序博客网 时间:2024/06/05 18:42
进程的概念
进程与程序
进程是一个程序的一次执行过程
虚拟内存分段
- .stack 栈区,存放局部变量、函数传参、返回地址(递归容易引起栈溢出)
- .heap 堆区,malloc
- .bss 未初始化的全局/静态变量
- .data 已初始化的全局/静态变量
- .text 正文段,代码、常量
进程号
PID 自身进程号
PPID 父进程号
state进程状态
- R 运行态
- S 睡眠态
- T 停止态
- Z 僵尸态
- + 代表前台
- s 代表会话组长
- l 代表多线程
- N 代表优先级比较低
- < 代表优先级比较高
优先级
范围:-20~19,数字越小优先级越高
- -20~-1 是给系统使用的
- 0~19 是给用户使用的
进程分类
- 交互进程
- 前台进程
- 后台进程
- 守护进程
- 批处理进程
进程的常用命令
查看
- pstree
- 树形查看进程关系
- 系统的第一个进程init是所有进程的根
- ps
- 查看当前终端
- -ef 查看详细信息
- -aux -axj 查看更详细信息,包含进程状态
- -el 查看进程优先级
前后台切换
- fg 唤回前台运行
- bg 放到后台运行
单个进程启停控制
- ./a.out & 产生后台进程,不能用ctrl+c结束
- ctrl + z 暂停进程
- ctrl + c 结束进程
更改优先级
- nice 运行之前制定优先级
- renice 更改运行时进程的优先级
发送信号给执行进程
- kill -l 列出所有信号
- kill -9 SIGKILL结束进程,不能被忽略
- kill -19 暂停,不能被忽略或处理
- kill -20 暂停,ctrl+z产生
交互进程
创建 fork()
- 创建一个子进程,在父进程中返回子进程的PID,在子进程中返回0
获取PID
- getpid();
- getppid();
excel函数族和system函数族
- execl();
- 将虚拟地址空间替换成新的可执行文件
- 通常和fork结合起来用
- close_on_exec();
- 关闭所有不用的资源
- system();
- 创建一个子进程执行命令
退出进程
- exit();
收集子进程退出信息
- wait();
- 阻塞等待收集进程退出信息
- waitpid();
- waitpid(pid,status,options)
- pid > 0 等待指定的子进程退出
- pid = -1 等待任意的子进程退出
- options 为0 表示阻塞等待
守护进程
概念
守护进程特点
- 在后台运行
- 独立于任何终端
- 周期性的执行某种任务或者等待处理特定的事件
- 通常是在系统启动时运行,在系统关闭时结束
会话、控制终端
- linux以会话、进程组的方式管理进程
- 用户打开一个终端,新系统会创建一个会话
- 终端关闭时所有相关进程会被结束
守护进程的创建
- 创建子进程,父进程退出
- 子进程变成孤儿进程,被init进程收养
- 子进程在后台运行
- fork()
- 子进程创建一个新的会话
- 子进程成为新的会话组长
- 子进程不在属于原来的会话,即脱离原来的终端
- setsid()
- 更改当前工作路径
- chdir(“/”);或者chdir(“/tmp”);
- 守护进程一直在后台运行,其工作目录不能被卸载
- 重设文件权限掩码
- umask(0);
- 文件权限掩码设置为0
- umask(0);只影响当前进程
- 关闭打开的文件描述符
- for(i=0;i
批处理进程
- shell
0 0
- Linux--进程--僵尸进程
- linux 进程
- linux 进程
- Linux 进程
- Linux进程
- LINUX进程
- Linux进程
- Linux进程
- Linux进程
- linux进程
- Linux进程
- 进程-Linux
- linux-进程
- Linux进程
- linux 进程
- linux进程
- linux进程
- Linux进程
- 控制反转(IoC)与依赖注入(DI)
- Html5多媒体相关的API---video
- java高并发处理
- Eclipse常用 快捷键
- Mybatis - 一级缓存和二级缓存 -1
- Linux进程
- [ios] respondsToSelector等常用判断方法
- SURE无偏估计推导
- opencv获取摄像头帧率分辨率
- 重复值判断练习
- C/C++ console程序隐藏console黑窗口
- 数据加签加密
- 小白笔记----------- 执行 hadoop checknative 报错 openssl: false Cannot load libcrypto.so
- Angular 2 – 提升水平的最佳实践