
【Linux应用层】
文章平均质量分 80
Linux系统编程、网络编程
zsyyugong
这个作者很懒,什么都没留下…
展开
-
【Linux】进程间通信原理与Reactor模式
因为每个进程有各自的私有用户空间(0~3G),共享1GB的内核空间。内核缓冲区的大小是有限的。进程想写时,tcp 发送缓冲区缓冲区不一定有空间,需要先注册写事件,由内核判断TCP内核缓冲区有没有写满。如果没有写满,我就可以往里面写。线程同理,差不多原创 2023-08-21 18:24:00 · 298 阅读 · 0 评论 -
【Linux】ET和LT模式总结
EPOLL事件有两种模型:Edge Triggered (ET) 边缘触发只有数据到来才触发,不管缓存区中是否还有数据。Level Triggered (LT) 水平触发只要有数据都会触发。原创 2023-08-03 21:05:45 · 683 阅读 · 0 评论 -
【Linux】Libevent库---bufferevent
不能先创建bufferevent,因为需要封装进去的是cfd,而不是lfd。lfd创建的过程应该是直接封装在evconnlister_new_bind函数中的,外部不可见,因为根本不需要我们操作lfd。创建buffrtevent事件对象时,需要有一个客户端对应的文件描述符,而这个文件描述符只有在先监听了后才会有。原创 2023-08-01 15:53:22 · 390 阅读 · 0 评论 -
【Linux】Libevent库---event
fifo缓冲区没满,对应写事件文件描述符就会处于就绪态,然后dispatch扫描时触发写事件。写事件fifo只要有空间就能被触发,触发后调用回调函数,回调函数里再write。原创 2023-07-31 10:40:47 · 195 阅读 · 0 评论 -
【Linux】线程池(转载黑马程序员)
epoll讲的是 单线程 怎么进行 多路复用。多路复用 仍然是内核维护的单线程方式,做事的还是只有一个线程。线程池的方法就是找n个人来做。原创 2023-07-28 20:01:32 · 117 阅读 · 0 评论 -
【Linux】本地socket通信cs模型
【代码】【Linux】本地socket通信。原创 2023-07-28 19:38:37 · 106 阅读 · 0 评论 -
【Linux】多路IO转接服务器--epoll反应堆(转载黑马程序员)
epoll ET 模式 + 非阻塞、轮询 + void *ptr。原创 2023-07-26 20:00:21 · 225 阅读 · 0 评论 -
【Linux】多路IO转接服务器--socket实现(含进程、线程、UDP)
strcut sockaddr 很多网络编程函数诞生早于IPv4协议,那时候都使用的是sockaddr结构体,为了向前兼容,现在sockaddr退化成了(void *)的作用,传递一个地址给函数,至于这个函数是sockaddr_in还是sockaddr_in6,由地址族确定,然后函数内部再强制类型转化为所需的地址类型。“IP地址+端口号”就对应一个socket。欲建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。原创 2023-07-20 19:51:07 · 204 阅读 · 0 评论 -
【Linux】多路IO转接服务器--epoll实现
EPOLL_CTL_DEL 将一个 fd 从监听红黑树上摘下(取消监听)EPOLL_CTL_MOD 修改 fd 在 监听红黑树上的监听事件。events:传出参数,【数组】, 满足监听条件的 那些 fd 结构体。对应监听事件的 fd。> 0: 满足监听的 总个数。epfd:epoll_create 函数的返回值。epfd:epoll_create 函数的返回值。size:创建的红黑树的监听节点数量。0: 没有 fd 满足监听事件。返回值:指向新创建的红黑树的根节点的 fd。op:对该监听红黑数所做的操作。原创 2023-07-26 19:40:59 · 75 阅读 · 0 评论 -
【Linux】生产者消费者条件变量模型
线程同步典型的案例即为生产者消费者模型,而借助条件变量来实现这一模型,是比较常见的一种方法。假定有两个线程,一个模拟生产者行为,一个模拟消费者行为。两个线程同时操作一个共享资源(一般称之为汇聚),生产向其中添加产品,消费者从中消费掉产品。2) 解锁已经加锁成功的信号量 (相当于 pthread_mutex_unlock(&mutex)),12 两步为。3) 当条件满足,函数返回时,解除阻塞并重新申请获取互斥锁。重新加锁信号量 (相。当于, pthread_mutex_lock(&mutex);原创 2023-07-15 16:36:56 · 113 阅读 · 0 评论 -
【Linux】生产者消费者条信号量模型
应用于线程、进程间同步。相当于 初始化值为 N 的互斥量。N 值,表示可以同时访问共享数据区的线程数。sem_t sem;定义类型。sem: 信号量pshared: 0: 用于线程间同步1: 用于进程间同步value:N 值。(指定同时访问的线程数)sem_wait();一次调用,做一次-- 操作,当信号量的值为 0 时,再次 -- 就会阻塞。(对比 pthread_mutex_lock)sem_post();原创 2023-07-15 18:39:33 · 86 阅读 · 0 评论 -
【Linux】线程
线程中:线程主函数返回值、pthread_exit-->void *;进程中:main 返回值、exit 参数-->int;失败:错误号 -----Linux 环境下,所有线程特点,失败均直接返回错误号。参数:thread:线程 ID (【注意】:不是指针);参数 2:通常传 NULL,表示使用线程默认属性。阻塞等待线程退出,获取线程退出状态 其作用,对应进程中 waitpid() 函数。参数 3:函数指针,指向线程主函数(线程体),该函数运行结束,则线程结束。参数 4:线程主函数执行期间所使用的参数。原创 2023-07-13 19:42:14 · 115 阅读 · 0 评论 -
【Linux】信号屏蔽与捕捉
设置信号屏蔽,按,SIGINT信号到不了,内核不处理。设置信号捕捉,SIGINT信号到了,但却被内核抓住了。原创 2023-07-09 15:01:48 · 340 阅读 · 0 评论 -
【Linux】fork进程
函数调用成功返回 r/w 两个文件描述符。无需 open,但需手动 close。规定:fd[0] → r;fd[1] → w,就像 0 对应标准输入,1 对应标准输出一样。向管道文件读写数据其实是在读写内核缓冲区。失败: -1 ,设置errno。管道创建成功以后,创建该管道的进程(父进程)同时掌握着管道的读端和写端。代码:父子进程使用管道通信,父写入字符串,子进程读出,并打印到屏幕。fd[1]: 写端。参数: fd[0]: 读端。返回值: 成功: 0。原创 2023-07-06 17:42:02 · 225 阅读 · 0 评论 -
【Linux】Linux文件IO详解(附代码实例)
【代码】【Linux】文件IO示例。原创 2023-06-29 17:19:02 · 182 阅读 · 0 评论 -
【Linux】Makefile
当文件比较少时,这没有没有什么问题,当文件非常多的时候,就会带来非常多的效率问题如果文件非常多的时候,我们,只是修改了一个文件,所用的文件就会重新处理一次,编译的时候就会等待很长时间。如果修改a.c ,我们再次执行make,它的本意是想生成第一个目标test应用程序,它需要先生成a.o,发现a.o依赖a.c(执行我们修改了a.c)发现a.c比a.o更加新,现在a.o b.o都有了,其中的a.o比test更加新,就会执行。a.c命令来生成a.o文件。b.o依赖b.c,发现b.c并没有修改,就。原创 2023-11-19 11:50:55 · 188 阅读 · 0 评论 -
【Linux】find -print0和xargs -0原理及用法
ind命令在打印出一个文件名之后接着输出一个 NULL 字符 ('\0') 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符.原创 2023-06-24 20:24:23 · 962 阅读 · 0 评论