• APUE第八章-进程控制


    一、进程标识

    二、函数fork

      1.写时复制,copy-on-write

      2.文件共享,父进程等待子进程完成,子进程结束后,它对任一共享描述符的读写操作的文件偏移量已做相应的更新,同时操作时,可以考虑使用文件锁

    三、函数vfork

      1.不完全复制父进程的地址空间

      2.保证子进程先运行,直到其调用exec

    四、函数exit(进程终止)

      1.系统调用的_exit不冲洗标准I/O流,C库中的exit会;

      2.父进程比子进程先终止,则子进程的父进程改为init进程,保证每个进程都有一个父进程

      3.子进程终止,但父进程没对其进行资源释放,则变成僵尸进程,ps命令状态打印Z

    五、函数wait和waitpid

      1.当子进程正常或异常终止,内核会向父进程发送sigchld信号,因为这是异步事件;

      2.wait使其调用者阻塞;如果不想阻塞,由不想子进程变成僵尸进程,可使用两个fork的方法:先fork一个子进程,然后再调用fork,第一个子进程exit,第二个子进程睡眠2s保证第一个子进程退出;

      3.竞争条件

        3.1等待父进程终止的方法:

          while(getppid != 1){//轮询方式,比较浪费CPU时间,调用者每个1s被唤醒一次;

            sleep(1);

          }

        3.2printf等标准输出依赖于内核使用两个进程运行的顺序及每个进程运行的时间长度,所以会存在竞争条件,setbuf(stdout,NULL)设置标准输出不带缓冲区 

     六、函数exec

      1.popen、system调用的使exec

      

  • 相关阅读:
    Python编码风格
    CI持续集成—记一次jenkins安装及ldap配置
    mysql主从同步失败处理
    redis优化
    sysbench
    Ubuntu12.04 Installation and Subversion(svn)
    MySQL 5.7 CLUSTER NDB 7.5 创建磁盘表 undo logfile group tablespace 内存表修改为磁盘表
    Java异步调用Future对象
    Java宝典(二)
    Java宝典(一)
  • 原文地址:https://www.cnblogs.com/jly594761082/p/10291193.html
Copyright © 2020-2023  润新知