自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 linux下epoll的相对于select,poll的优点

select:1、记录每种时间的结构,在数组按位来记录关注的文件描述符上的事件。2、每次最多监听1024个文件描述符,并且文件描述符最大值为1023。3、select函数返回时,通过传递的结构体变量将结果带回,并且内核会修改用户变量。①每次都必须循环探测哪些文件描述符就绪②每次调用select之前都必须重新设置三个结构体变量4、为了提高底层效率,select函数第一个参数为最大文件描述...

2018-12-07 17:21:57 738

原创 UDP编程以及与TCP的区别

UDP编程函数原型:int socket(int domain, int type, int protocol);int bind(int sockfd, const struct sockaddr* my_addr, int addrlen);/*与TCP函数原型一样,参见上一篇博客。*/int recvfrom(int sockfd, void* buf, int len, int...

2018-11-18 14:43:18 188

原创 linux下socket编程

各函数原型:int socket(int family, int type, int protocol);/*family:指定使用的协议族:AF_INET(IPv4) AF_INET6(IPv6) AF_LOCAL(UNIX协议) AF_ROUTE(路由套接字) AF_KEY(秘钥套接字)type:指定使用的套接字的类型:SOCK_STREAM(字节流套接字) SOCK_DGRAMpr...

2018-11-11 15:17:48 691

原创 linux下shell命令解析器

shell是一个命令语言解析器,有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给linux核心。当普通用户成功登陆,系统将执行一个称为shell的程序,shell进程提供了命令行的提示符,对普通用户用”$”作提示符,超级用户用”#”作提示符。一旦出现shell提示符,就可以键入命令名称及命令需要的参数,shell将执行这...

2018-11-05 16:35:33 4856

原创 linux下线程间数据是否共享

1、同一进程中,主线程与子线程是同步运行的,所以在主线程中加入sleep语句,确保以上线程运行完成。由打印结果得到,主线程中的数据被子线程修改,所以同一进程中不同线程的数据共享。2、主线程将子线程写入文件的数据读出,所以同一进程的不同线程间的文件描述符是共享的。3、主线程中在堆区上开辟一段空间,将数据写入,子线程将其读出。打印结果如上,由此可以得到,子线程能把主线程在堆区...

2018-10-28 17:49:49 1602

原创 消息队列和共享内存

共享内存和消息队列都是在进程间传递数据的工具。消息队列也是队列的一种,在同一类型上先进先出,可以完成多进程间的通讯,每个数据都带有类型,读取数据的进程只会读取自己关注的类型的数据,并且同一种类型的数据在内存是分段存储的,读取端口一次只能读一段数据。消息队列操作函数:int msgget((key_t)key, int flag);int msgsnd(int msgid, const vo...

2018-10-24 22:12:06 5506

原创 进程间通讯————管道

管道分为两种,一种是有名管道,一种是无名管道。有名管道:利用管道文件实现进程间通讯,管道文件仅仅是磁盘上的一个文件标识,其真实数据存储在内存上。对于管道文件的打开操作,必须是有读有写,否则open函数会阻塞;对于管道文件指向的内存中存储的数据,被读取后便不存在了。命令:mkfifo filename文件函数:open(打开文件),write(写数据),read(读取数据),close(关...

2018-10-15 23:41:02 140

原创 KMP算法的思想以及代码的实现

KMP算法用于快速进行字符串匹配,它是基于BF算法的一种优化,能极大提高匹配的时间复杂度。它的思想主要是在进行BF算法的基础上,当i位置与j位置的字符不匹配时,令i不回退,而j回退到k的位置,如下图而KMP的核心,就是寻找这个k的位置,在串中存在两个 相等的真子串,其中一个串是以0位置开始,另一个以j-1位置结束,这个k的位置就应该在以0位置开始的子串的下一个位置,k的值等于真子串的长度。...

2018-09-30 19:43:23 668 1

原创 如何寻找单链表倒数第K个元素

如下是一个带头结点的单链表结构typedef struct Node{ ElemType data; Node *next;}Node;typedef struct Linklist{ Node head; int count;}Linklist;假设单链表中有N个元素,寻找倒数第K个元素,也就是寻找单链表中正数的第N-K个元素,但是这个N是未知的。首先我们定义一个结点的结...

2018-09-23 22:05:28 313

原创 C++函数模板与类模板小结

1、函数实参的类型推演:template<typename T>void fun(T a){ cout << typeid(T).name() << endl;//void (__thiscall Test::*)(int)}template<typename R, typename C, typename A>void f...

2018-09-16 20:27:16 290

原创 exec系列函数的原理及用法

用exec函数进行进程替换: 在多进程编程下,用函数封装,其所有的子进程做的事情基本相同;进程替换后,创建出子进程,子进程根据条件调用新的程序文件,调用成功后,原程序将不再继续运行,代码示例如下 上图在子程序中通过exec替换新的代码,从而执行新的程序文件。 exec系列函数格式 int execl(char pathname,char *argv1,char *argv2,……,ch...

2018-09-09 16:27:29 1686

原创 sys__open的实现流程以及创建进程后父子进程的关系

在用户态下库函数的实现过程: 1、系统调用号通过eax寄存器被保存起来。 2、保存现场。 3、触发0x80中断。(0x80中断对应系统调用函数) 之后,便进入内核手段,这里说一下open在内核态下的实现流程。 1、在进程PCB中申请一个未使用元素的下标,fd。 2、申请struct file结构体变量,在全局数组中存储,其中个包含: f_mode(对文件的读写模式,如果驱动程...

2018-08-10 17:54:11 388

转载 fork之前之后文件描述符共享

在C程序中,文件由文件指针或者文件描述符表示。ISO C的标准I/0库函数(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用文件指针,UNIX的I/O函数(open, close, read, write, ioctl)使用文件描述符。下面重点来说下,文件描述符是如何工作的。文件描述符相当于一个逻辑句柄,而open,close等函数则是将文件...

2018-08-08 22:07:03 413

原创 Linux平台下的文件操作指令及其解释

这里所使用的是由内核态执行的系统调用函数,是系统内核提供给用户访问系统的管理底层的硬件接口。 在头文件

2018-08-03 22:28:14 106

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除