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 是给用户使用的

进程分类

  1. 交互进程
    • 前台进程
    • 后台进程
  2. 守护进程
  3. 批处理进程

进程的常用命令

查看

  • 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以会话、进程组的方式管理进程
  • 用户打开一个终端,新系统会创建一个会话
  • 终端关闭时所有相关进程会被结束

守护进程的创建

  1. 创建子进程,父进程退出
    • 子进程变成孤儿进程,被init进程收养
    • 子进程在后台运行
    • fork()
  2. 子进程创建一个新的会话
    • 子进程成为新的会话组长
    • 子进程不在属于原来的会话,即脱离原来的终端
    • setsid()
  3. 更改当前工作路径
    • chdir(“/”);或者chdir(“/tmp”);
    • 守护进程一直在后台运行,其工作目录不能被卸载
  4. 重设文件权限掩码
    • umask(0);
    • 文件权限掩码设置为0
    • umask(0);只影响当前进程
  5. 关闭打开的文件描述符
    • for(i=0;i

批处理进程

  • shell
0 0
原创粉丝点击