• UINX标准C


    进程与程序的关系:

      1.程序就是存储在磁盘上可执行的二进制文件,

      2.进程是一个正在执行的的程序,不过一个程序可能存在多个进程实例。

    查看进程中的pid和获取pid(进程号)

      1.终端指令:ps  aux   查看所有的正在进行的进程,显示出用户名,进程号,cup占用比,内存占用比等    

      2.终端指令:ps   aux  |  grep  pid   可过滤其他的无关的pid,可以直接查看目标pid

      3.标准c:  getpid()查看当前进程的pid   getppid()查看父进程的pid             

    子进程的创建(当前进程中创建子进程)

      1.fork():pid_t    fork(void);

        a.创建出子进程,程序开始时,子进程将父进程中的全局段,静态数据段,堆,栈,IO缓冲区中的数据都拷贝一份,并且会共享代码段。

        b.此函数如果创建成功会返回两个值(0和子进程的pid),这两个值没有先后顺序。如果创建失败则会返回-1。

      2.vfork()和exec联合才能使用:pid_t  vfork(void);   int   exec(const char* path,const char *arg...)  实例 exec(“路径”,“a.out”,NULL);

        a.vfork()创建出子进程,不过程序开始时,子进程之间不会拷贝父进程中全局段,静态数据段,堆,栈,IO缓冲区中的数据不会拷贝,也不会贡献代码段,此函数执行是有先后顺序的,子进程如果还未结束,父进程就不会执行。

        b.exec()通过此函数创建的子进程会替换掉父进程给的代码段,此函数不是重新创建一个新的pid,而是加载一个可执行文件。  

    进程的退出和异常终止

      1.退出:

          a.return函数        b.系统函数_exit(stat)和标准C函数_Exit         c.标准exit调用_exit/_Exit      d.最后一个线程结束,直接退出

      2.异常终止:

          a.通过函数abort()       b.程序运行时,通过一些键位来取消操作     c.线程中取消运行

    进程的回收 

      1.wait: pid_t   wait(int* status)

        a.等待指定的子进程结束,父进程进行会收,status是子进程结束后的返回值。

        b.所有子进程在进行时,父进程会阻塞。

      2.waitpid:pid_t   waitpid(pid_t  pid,int* status,int option)

  • 相关阅读:
    P1227 【[JSOI2008]完美的对称】
    Hive使用Calcite CBO优化流程及SQL优化实战
    深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化
    神奇的传送门
    怎么设计一个秒杀系统
    我的收藏
    Redis 客户端 Jedis、lettuce 和 Redisson 对比
    Redis 的完整安装过程
    Redis GEO 功能使用场景
    Redis 传送门
  • 原文地址:https://www.cnblogs.com/goul/p/9362592.html
Copyright © 2020-2023  润新知