Linux系统调用及glibc标准库函数
文章平均质量分 82
Strugglingler
这个作者很懒,什么都没留下…
展开
-
poll 机制
① APP不知道是否有事件发生,调用poll函数并传入超时时间。此时线程先放入队列。② APP进入内核态,如果有事件发生,则poll立即返回。线程也出队列,APP被唤醒。③ 如果没数据,就休眠一段时间。④ 如果在休眠期间,有中断被调用,唤醒了队列中的线程,APP被唤醒。⑤ 当超时时间到了之后,内核也会唤醒 APP。⑥ APP根据函数的返回值就知道是否有数据,如果有数据就调用read读数据。原创 2024-05-12 23:40:17 · 825 阅读 · 0 评论 -
【getopt函数用法】
getopt每次调用会返回main的输入中带“-”的参数。参数argc和argv是由main()传递的参数个数和内容,最后一个参数为选项字符串。这个字符串规定了选项中字符串的内容是否要带参数。看我分析原创 2024-05-12 19:17:47 · 648 阅读 · 0 评论 -
mmap函数小实验
为了深入理解mmap的参数length与offset对mmap函数行为的影响,从而更好地理解内存映射。原创 2024-04-16 15:30:17 · 878 阅读 · 0 评论 -
dl_iterate_phdr函数
需要注意的是,dl_iterate_phdr 是一个系统特定的函数,并不是所有的操作系统都提供这个函数。在某些平台上(如 macOS 11.1),这个函数可能是不存在的。该函数遍历共享对象列表,对每次共享对象调用一次回调函数,知道所有的共享对象都遍历完了或者返回一个非零值。dl_iterate_phdr 函数的主要作用是提供一种机制,让程序能够动态地获取到系统已经加载的所有共享库的信息。通过这个函数,程序可以在运行时进行自我分析或者进行某些操作,比如动态地修改共享库的行为。原创 2024-03-12 18:19:28 · 257 阅读 · 0 评论 -
sigaction函数与signal函数
/ 信号的处理函数// 用于SA_SIGINFO标志的信号处理函数// 信号屏蔽字,处理信号时会临时设置此屏蔽字// 控制信号处理方式的标志// 系统保留字段,不应使用sa_handler:这是信号的处理函数,当信号发生时,系统会调用这个函数。sa_sigaction:这是一个更高级的信号处理函数,它可以处理带有多参数的信号(如siginfo_t结构体中包含的额外信息)。如果设置了SA_SIGINFO标志,那么sa_handler字段会被忽略,而使用sa_sigaction作为信号处理函数。原创 2024-03-07 20:44:29 · 320 阅读 · 1 评论