系统调用整理

本文详细介绍了系统调用的相关知识,包括signal、sigaction、I/O模式(阻塞IO、非阻塞IO、IO多路复用、信号驱动IO和异步IO)、select、poll和epoll的原理、优缺点,以及如何使用socket和rlimit进行资源限制。通过对这些系统调用的深入理解,开发者可以更好地进行进程管理和系统级别的交互。
摘要由CSDN通过智能技术生成

系统调用参考:

  • signal
    设置处理信号的功能
    sighandler_t signal(int signum, sighandler_t handler);
    sig:设置处理功能的信号值
    SIGABRT (信号中止)异常终止,例如由…发起 退出 功能。
    SIGFPE (信号浮点异常)错误的算术运算,例如零分频或导致溢出的运算(不一定是浮点运算)。
    SIGILL (信号非法指令)无效的功能图像,例如非法指令。这通常是由于代码中的损坏或尝试执行数据。
    SIGINT (信号中断)交互式注意信号。通常由应用程序用户生成。
    SIGSEGV (信号分段违规)对存储的无效访问:当程序试图在已分配的内存之外读取或写入时。
    SIGTERM (信号终止)发送到程序的终止请求。
    handler:指定使用sig指定的信号编号处理信号的方法(通常设定软件退出执行接口exit(-1),延迟文件写入)
    默认处理(SIG_DFL):信号由该特定信号的默认动作处理。
    忽略信号(SIG_IGN):忽略信号,即使没有意义,代码执行仍将继续。
    函数处理程序:定义一个特定的函数来处理信号,void handler_function (int parameter)

  • sigaction
    检查并改变信号动作,POSIX的信号接口,而signal()是标准C的信号接口(如果程序必须在非POSIX系统上运行,应该使用这个接口)
    int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
    sig:设置处理功能的信号值
    act:给信号signum设置新的信号处理函数act
    oldact:该信号原有的信号处理函数oldact

  • I/O mode
    [1] blocking IO - 阻塞IO
    [2] nonblocking IO - 非阻塞IO
    [3] IO multiplexing - IO多路复用
    [4] signal driven IO - 信号驱动IO
    [5] asynchronous IO - 异步IO

  • select
    用于确定一个或多个套接字的状态,对每一个套接字,调用者可查询它的可读性、可写性及错误状态信息(基于位存储)
    int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
    nfds :指定 select() 要遍历的最大文件描述符 + 1
    readfds :文件描述的数组,关心读事件
    wretefds :文件描述符的数组,关心写事件
    exceptfds :文件描述符的数组,关心出错事件
    timeout :select 阻塞的时间,NULL表示一直阻塞
    配套接口:
    void FD_CLR(int fd, fd_set *set);清除文件句柄fd与fdset的联系
    int FD_ISSET(int fd, fd_set *set);检查fdset联系的文件句柄fd是否可读写,>0表示可读写
    void FD_SET(int fd, fd_set *set);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值