• Linux网络编程学习(二) ----- 进程控制(第三章)


    1、进程和程序

    程序是一个可执行文件,而一个进程是一个执行中的程序实例。一个进程对应于一个程序的执行,进程是动态的,程序是静态的,多个进程可以并发执行同一个程序。比如几个用户可以同时运行一个编辑程序,每个用户对此程序的执行均作为一个单独的进程。

    2、进程控制的系统调用
    一个进程可以启动另一个进程,进程之间形成层次结构,而进程树的顶端是一个控制进程,一个名为Init的程序的执行,该进程是所有用户进程的祖先。主要的系统调用有

    • fork()   通过复制调用进程来建立新的 进程,是最基本的进程建立操作
    • exec   包含一系列的系统调用,通过用一个新的程序覆盖原内存空间来实现进程的转变
    • wait()  提供初级的进程同步措施,使一个进程等待,直到另一个进程结束为止
    • exit()  终止一个进程的实现

    3、进程的建立

     进程的创建是通过调用fork()来创建,创建进程的那个进程成为父进程,创建出来的新的进程成为子进程,pid = fork(),返回值为进程标识符,如果返回的非零整数,则表明是父进程,返回的是0,则为子进程。

    4、进程的运行

    exec系列中的系统调用完成将一个新程序装入调用进程的内存空间,来改变调用进程的执行代码,从而形成新的 进程。exec调用成功,那么调用进程则会被覆盖,然后从新程序的入口开始执行,但其进程标识符与调用进程相同。

    所以,exec调用成功后无任何数据返回,这与fork()不同

    5、进程的终止

    系统调用exit()实现进程的终止,成功返回0,出错则返回非0值,exit()除了停止进程外,还可以关闭所有已打开的文件,若父进程因执行了wait()调用而处于睡眠状态,那么子进程执行exit()会重新启动父进程运行,另外,exit()还将完成一些系统内部的清除工作,例如缓冲区的清除工作等

    除了exit()外,当进程运行完其程序到达main函数末尾时,进程会自动终止,当进程在main函数内执行一个return语句时,也会终止。当然还有一个_exit()函数也可以终止进程,其与exit()相同,但没有系统内部的清除工作。

    进程终止的特殊情况:

    1)子进程终止时,父进程并不正在执行wait()调用。

    2)当子进程尚未终止时,父进程却终止了。一般允许父进程终止,并把它的子进程交给系统的初始化进程所属

    6、进程的同步

    使用wait()是实现进程同步的简单手段

    7、进程的优先级

    通过nice()调整进程的优先数,如nice(5)则是增加优先数,优先数越大,进程优先权就越低,所以nice()输入一个正数是降低了进程从优先权,普通进程只能降低优先权,超级用户可以通过输入一个负值,比如nice(-1)来增加优先权

    8、守护进程

    守护进程是一种后台运行并且独立于所有终端控制之外的进程,有很多守护进程,执行着各种系统服务和管理的任务,那么为什么要独立于终端之外的进程呢?

    1)安全性考虑----进程执行信息不显示在任何一个终端上

    2)不被打断----避免进程被终端的中断信号打断

    3)方便转入后台---可以通过&将程序转为后台执行,有时也希望程序能够自动将其转入后台执行

    9、守护进程的启动

    1)通过系统的初始化脚本启动------脚本目录通常在etc/rc.d下,这种守护进程有超级用户权限

    2)通过inetd启动   --- 很多网络服务程序是由inetd守护程序启动的

    3)由cron定时启动的处理程序

    4)由at启动的处理程序

    5)终端启动---通常只用于守护进程的测试或者重启进程

    6)终端上用nohup启动的进程 ---- 这种方法可以将所有程序变为守护进程

  • 相关阅读:
    《图书管理系统》可行性分析的安排
    成员的个人介绍
    [译] 数据库是如何工作(一)介绍
    [译]数据库是如何工作(二)回到原点 算法基础
    [译]数据库是如何工作(三)全文概述
    [译]数据库是如何工作(四)客户端管理
    [译]数据库是如何工作(五)查询管理器
    [译]数据库是如何工作(六)数据管理器
    docker 集群 zookeeper 碰到 java.net.NoRouteToHostException: Host is unreachable (Host unreachable)
    啰嗦的 java,简洁的 lombok —— lombok 的使用及简单实现单例模式注解
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8883311.html
Copyright © 2020-2023  润新知