![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux应用层
颖念
看前面黑洞洞,我打迈腿来,将其看个真真切切。致电子之路
展开
-
网络IPC非阻塞和异步I/O
通常,recv函数没有数据可用时会阻塞等待。同样地。当套接字输出队列没有祖公空间用来发送消息时,函数send会阻塞。在套接字非阻塞模式下,行为会改变。这种情况下,这些函数不会阻塞而失败,设置errno为EWOULDBLOCK或者EAGAIN。当这些发生时,可以使用poll或者select来判断何时能接受或者传输数据。套接字机制有自己的方式来处理异步I/O.一些文献中吧经典的基于套接字的异步I/O原创 2020-02-16 15:26:55 · 194 阅读 · 0 评论 -
分隔符字符串处理(strtok与strsep区别)
1、strtok原型与应用原型:char *strtok(char *src, const char *delim);功能:将src(原字符串)根据delim(分隔符串)分解为不同子串(连续算一个)返回:属于当前分割的子串,当前没有分割的子串时返回NULL#include <stdio.h> #include <string.h> int main(void) { ...转载 2018-07-12 17:28:13 · 634 阅读 · 0 评论 -
getopt和getopt_long函数
平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。 在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。 #include <unistd.h> int get...转载 2018-07-12 14:00:45 · 138 阅读 · 0 评论 -
dup和dup2的使用方法
/*本文通过标准输出的重定向和恢复的过程来解释dup和dup2的使用方法*/#include <stdio.h>#include <unistd.h>#include <fcntl.h>//STDIN_FILENO标准输入描述符(0)//STDOUT_FILENO标准输出描述符(1)//STDERR_FILENO标准错误描述符(2)int main(void){...转载 2018-07-05 09:49:45 · 1227 阅读 · 0 评论 -
typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 2)typedef是在编译时处理的。它在自己的作用...转载 2018-06-01 10:47:38 · 125 阅读 · 0 评论 -
命令行选项解析函数(C语言):getopt()和getopt_long()
上午在看源码项目 webbench 时,刚开始就被一个似乎挺陌生函数 getopt_long() 给卡住了,说实话这函数没怎么见过,自然不知道这哥们是干什么的。于是乎百度了一番,原来是处理命令行选项参数的,的确,正规点的大型程序一般第一步就是处理命令行参数的,接着才是主干程序。在百度和 man 的帮助下,找到了具体使用方法和解释,二话不说赶紧学习一下,并总结出文档记录一下。 平时在写程序时常...转载 2018-05-30 13:21:27 · 604 阅读 · 0 评论 -
Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。宏FD_ZERO、FD_SET、FD_CLR、FD_ISSET中“FD”即为file descriptor的缩写,下面来一一进行介绍。 首先介绍一个重要的结构体:fd_s...转载 2018-03-28 09:38:29 · 1302 阅读 · 0 评论 -
I/O多路转换 select
Linux驱动部分我们曾经使用了poll机制完成了在应用层代码读取按键值。这节课介绍的select也很相似。当我们要监控好几个文件描述符的读写呢?如果我们阻塞的去处理其中一个,那第二个怎么办呢?下面我们一起想想办法。 方法一:使用fork将一个进程变成两个进程,每个进程处理一套数据通路,如果使用多个进程,每一个进程就可以阻塞处理read,write函数。但是这也产生了问题:操作什么时候终止?如果原创 2020-02-16 15:11:37 · 106 阅读 · 0 评论