• 中断系统调用


    中断系统调用

    系统调用可分为两类:慢速系统调用和其他系统调用。

    1. 慢速系统调用:可能会使进程永远阻塞的一类。如果在阻塞期间收到一个信号,该系统调用就被中断,不再继续执行(早期);也可以设定系统调用是否重启。如,readwritepausewait...
    2. 其他系统调用:getpidgetppidfork...

    结合pause,回顾慢速系统调用:

    慢速系统调用被中断的相关行为,实际上就是pause的行为: 如,read

      ① 想中断pause,信号不能被屏蔽。

      ② 信号的处理方式必须是捕捉 (默认、忽略都不可以)

      ③ 中断后返回-1, 设置errnoEINTR(表“被信号中断”)

      可修改sa_flags参数来设置被信号中断后系统调用是否重启。SA_INTERRURT不重启。 SA_RESTART重启。

    扩展了解

      sa_flags还有很多可选参数适用于不同情况:捕捉到信号后,在执行捕捉函数期间,不希望自动阻塞该信号,可将sa_flags设置为SA_NODEFER,除非sa_mask中包含该信号。

  • 相关阅读:
    mysql的权限定义
    数据库的启动流程和关闭介绍/mysql初始化配置文件
    SQL 执行顺序
    AJAX 同步请求锁浏览器
    JSON
    Json.NET
    JSON.parse()和JSON.stringify()
    the XMLHttpRequest Object
    命名方式
    varchar 和 nvarchar 的区别和使用
  • 原文地址:https://www.cnblogs.com/lr1402585172/p/10563884.html
Copyright © 2020-2023  润新知