linux系统接口
老王不让用
芝兰生于幽谷,不以无人而不芳; 君子修身立德,不为穷困而改节
展开
-
高级I/O:readv和writev函数
目录1、减少系统调用2、readv / writev 使用3、代码演练3.1、writev3.2、readv1、减少系统调用使用read()将数据读到不连续的内存、使用write()将不连续的内存发送出去,要经过多次的调用read、write。如果要从文件中读一片连续的数据至进程的不同区域,有两种方案:①使用read()一次将它们读至一个较大的缓冲区中,然后将它们分成若干部分复制到不同的区域; ②调用read()若干次分批将它们读至不同区域。同样,如果想将程序中不同区域的数据块连转载 2020-08-29 16:37:31 · 2366 阅读 · 0 评论 -
linux多线程:设置线程属性之CPU核绑定
不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。实际应用中通常需要将软件下的各个子任务分配各个核上运行,提高软件的运行效率。目录1、设置/获取进程间的CPU亲缘性(通过进程pid)2、设置/获取线程间的CPU亲缘性(通过线程属性指针)3、设置/获取线程的CPU亲缘性(通过线程结构 /Id )4、cpu_set_t 结构体5、函数测试6...原创 2020-03-14 15:46:22 · 3942 阅读 · 0 评论 -
linux多线程:自旋锁
1、概述自旋锁是 SMP 架构中的一种 low-level 的同步机制。当线程A想要获取一把自旋锁而该锁又被其它线程锁持有时,线程A会在一个循环中自旋以检测锁是不是已经可用了。对于使用自选锁需要注意:由于自旋时不释放CPU,因而持有自旋锁的线程应该尽快释放自旋锁,否则等待该自旋锁的线程会一直在那里自旋,这就会浪费CPU时间。 持有自旋锁的线程在sleep之前应该释放自旋锁以便其它线...转载 2020-03-13 15:28:33 · 2437 阅读 · 0 评论 -
socket编程:recv/send 和 recv/recvfrom返回值及处理
1、recv 和 recvfrom =0 当返回值为0时,表示对端已经关闭了这个链接,我们应该自己关闭这个链接,即close(sockfd)。另外因为异步操作会用select或epoll做事件触发,所以: 1、如果使用select,应该使用FD_CLR(sockfd,fd_set)将sockfd清除掉,不再监听。 2、如果使用epoll,系统会自己将 ...转载 2020-03-09 19:57:14 · 15257 阅读 · 1 评论 -
socket编程:accept接口使用
目录1、功能概述2、参数说明3、返回值3.1、返回成功3.2、返回失败3.3、socket 和 accept 返回值的关系1、功能概述accept 接口功能:一言以蔽之,接收一个套接字中已建立的连接。accpet 接口API说明接口格式如下:#include <sys/types.h>#include <sys/socket.h>...原创 2020-03-09 16:42:50 · 2190 阅读 · 0 评论 -
Linux内核巨页代码解析和使用
前言巨页的实现,涉及到两个模块:hugetlb 和 hugetlbfs。hugetlb 相当于是 huge page 页面管理者,页面的分配及释放,都由此模块负责。hugetlbfs 则用于向用户提供一套基于文件系统的巨页使用界面,其下层功能的实现,则依赖于 hugetlb。目录1、hugetlb模块2、hugetlbfs模块3、使用巨页3.1、 mmap方式3.2...转载 2020-01-13 20:02:58 · 2228 阅读 · 0 评论 -
linux基础:存储映射I/O(mmap接口应用)
前言 存储映射I/O使一个磁盘文件与存储空间中的一个缓存相映射。于是当从缓存中取数据,就相当于读文件中的相应字节。与其类似,将数据存入缓存,则相应字节就自动地写入文件。这样,就可以在不使用read和write的情况下执行I/O。为了使用这种功能,应首先告诉内核将一个给定的文件映射到一个存储区域中。这是由mmap函数实现的,接口如下:#include <sys/mman....原创 2020-01-09 18:53:11 · 990 阅读 · 0 评论 -
Linux errno详解之系统常见错误信息
Linux中系统调用的错误都存储于 errno中,errno由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误。PS: 只有当系统调用或者调用lib函数时出错,才会置位errno!查看系统中所有的errno所代表的含义,可以采用如下的代码:/* Function: obtain the errno string* char *strerror(...转载 2019-12-30 17:54:18 · 6358 阅读 · 0 评论 -
linux C编程之sleep()和usleep()的使用和区别
### 函数名: sleep头文件:#include <windows.h> // 在VC中使用带上头文件#include <unistd.h> // 在gcc编译器中,使用的头文件因gcc版本的不同而不同功 能: 执行挂起指定的秒数语 法:unsigned sleep(unsigned seconds);示例:#include <...转载 2019-12-19 11:59:42 · 11224 阅读 · 0 评论 -
kill()接口
转载地址:http://www.hqyj.com/news/emb203.htm kill()函数同读者熟知的kill系统命令一样,可以发送信号给进程或进程组(实际上,kill系统命令只是kill()函数的一个用户接口)。这里需要注意的是,它不仅可以中止进程(实际上发出SIGKILL信号),也可以向进程发送其他信号。表1列出了kill()函数的语法要点:所需头文件...转载 2019-04-22 10:54:26 · 1025 阅读 · 0 评论