UNIX C编程
文章平均质量分 88
LoveStackover
大龄码农,依然坚持,脚踏实地,不放弃梦想。
展开
-
进程IPC之PIPE(一)
1. PIPE#include <unistd.h>int pipe(int fd[2]);Returns: 0 if OK, −1 on error Pipe半双工且只能用于具有共同父进程的进程间通信, 当其返回的时候设置fd[0]为读端口,fd[1]为写端口,且fd[1]与fd[0]相连。如下图所示: 其中Pipe的使用关键只要记住下面这个图: ...原创 2020-11-19 11:53:30 · 507 阅读 · 0 评论 -
高级IO之简单的select_poll_epoll实验(五)
1. 题目 笔者出题:分别使用select, poll, epoll实现回显程序2. 代码展示2.1:select#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <err.h>原创 2021-01-19 15:45:44 · 442 阅读 · 0 评论 -
高级IO之Select_pselect_poll_epoll(四)
1. 基础概念 同时操作多个fd时,如果使用阻塞的方式,可能导致程序效率低下。我们可以使用非阻塞方式的IO,通过不断查询数据操作的结果来进行接下来的操作,这种处理方式就是轮询,缺点就是非常消耗CPU资源。所以在某种意义上其相当于阻塞的调用了IO函数read或者write,可以通过异步IO的方式来解决这个问题,但是因为一个进程只使用一个或者几个信号,当捕获该信号时无法判断是哪个fd数据就绪。最...原创 2021-01-19 15:45:32 · 387 阅读 · 0 评论 -
进程IPC之论证充分的探讨Key和Identifier的关系(五)
1. 问题 探究下Key和identifier的关系?2. 论证资料2.1 以下引用来自science Processes may access these resources only by passing a unique reference identifier to the kernel via system calls. The object’s re...原创 2018-02-18 17:10:53 · 141 阅读 · 1 评论 -
APUE查缺补漏之关于死锁
1. APUE中的死锁 最初接触到死锁是在APUE的记录篇中,并且总结了死锁产生的原因及预防的措施。现在重新回顾以前的知识: 造成死锁的原因 A thread will deadlock itself if it tries to lock the same mutex twice, but there are less obvious ways to create de...原创 2018-07-01 16:26:53 · 63 阅读 · 0 评论 -
高级IO之MMAP-缺页异常的理解(二)
1. 题目 With read and write, we copy the data from the kernel’s buffer to the application’s buffer (read), and then copy the data from the application’s buffer to the kernel’s buffer (write). With m...原创 2018-02-13 17:48:00 · 566 阅读 · 0 评论 -
多线程之你真的了解Spin_lock吗?(四)
1. 写在之前 在阅读本文前,如果下面的问题您都能回答出来,那么本文你可以从略。 Pthread_spin_lock和Spin_lock的区别?Spin_lock对于单核非抢占内核,为何是无意义的?那么中断处理函数的执行是在内核态或者用户态呢? 如果上面3个问题,您都能回答出来,说明本文所讲述的内容,您大体上都了解了。本文基于Pthread_spin_lock探究下其用...原创 2018-02-09 19:51:37 · 1269 阅读 · 0 评论 -
多线程之Thread-safe和Async-signal safe分析(十二)
1. 写在前面 笔者刚开始看到thread-safe和async-signal safe,非常草率的就过去了。笔者在开始本文前的理解:不就是重入嘛,当一个函数被调用的时候,又调用了该函数。在异步信号发生的场合对应着async-singal safe,在多线程中发生的场合对应着thread-safe。 如果您的理解和笔者一样,那么本文值得您浏览一下。2. Async-signal Safe...原创 2018-02-10 23:32:26 · 263 阅读 · 0 评论 -
多线程之问题的解决及使用GDB调试多线程多进程的手段(九)
1. 待解决问题[root@localhost ~]# ./examplethread started...parent about to fork...preparing locks...parent unlocking locks...parent returned from forkchild unlocking locks...child returned from fo...原创 2018-02-10 21:59:29 · 236 阅读 · 0 评论