zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    hrbustoj 2283 heap解题报告
    hrbustoj 2013 Play Game 2(博弈)
    hrbustoj 2130 一笔画(状态压缩)
    hrbustoj 1125 循环小数 II(小数变分数+极限思想)
    FZU 2170 花生的序列(动态规划)
    FZU 2168 防守阵地 I(前n项和的前n项和)
    FZU 2107 Hua Rong Dao(暴力回溯)
    FZU 2122 又见LKity(KMP+返回所有匹配位置)
    socket
    osi七层协议2
  • 原文地址:https://www.cnblogs.com/goul/p/9362592.html
Copyright © 2011-2022 走看看