系统调用整理

系统调用参考:

  • 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);建立文件句柄fd与fdset的联系
    vo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到了system()函数,它是一个方便简单地在程序中执行任意shell命令的函数。该函数的原型为int system(const char *command),通过传入一个字符串参数command来执行相应的命令。然而,使用system()函数的主要优点是方便简单,不需要自己处理底层的细节,如fork()、exec函数、waitpid()和exit()等调用。但是,于使用system()函数需要创建多个进程来执行命令,因此会牺牲一些效率。所以,如果程序对效率或速度有要求,不建议直接使用system()函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [嵌入式Linux-进程中常用的函数调用](https://blog.csdn.net/weixin_52694360/article/details/128710117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [linux高级编程常用的系统调用函数整理](https://blog.csdn.net/dengminghli/article/details/77439991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值