- 2025-01-08多进程监听同一个FD的问题
现象:tcp绑定端口和IP,生成FD;lsof发现运行时,其他进程也在监听该FD;并没有使用共享端口和地址SO_REUSEPORT SO_REUSEADDR在Linux系统中,fork()函数会创建一个子进程,该子进程是父进程的副本,包括文件描述符在内的资源也会被继承。如果希望避免子进程继承某些文件描述符,可以采取以下
- 2025-01-08FileSystemManager.ftruncateSync
undefinedFileSystemManager.ftruncateSync(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。小程序插件:支持,需要小程序基础库版本不低于2.19.2微信鸿蒙OS版:支持相关文档:文件系统功能描述对文件内容进行截断操作参数Objectobject属性类型默
- 2025-01-08FileSystemManager.fstatSync
StatsFileSystemManager.fstatSync(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。小程序插件:支持,需要小程序基础库版本不低于2.19.2微信鸿蒙OS版:支持相关文档:文件系统功能描述同步获取文件的状态信息参数Objectobject属性类型默认值必
- 2025-01-08FileSystemManager.fstat
FileSystemManager.fstat(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持,需要小程序基础库版本不低于2.19.2微信鸿蒙OS版:支持相关文档:文件系统功能描述获取文件的状态信息参数Objectobject属性类
- 2025-01-08FileSystemManager.ftruncate
FileSystemManager.ftruncate(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持,需要小程序基础库版本不低于2.19.2微信鸿蒙OS版:支持相关文档:文件系统功能描述对文件内容进行截断操作参数Objectobject
- 2025-01-08FileSystemManager.close
FileSystemManager.close(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持,需要小程序基础库版本不低于2.19.2微信鸿蒙OS版:支持相关文档:文件系统功能描述关闭文件参数Objectobject属性类型默认值
- 2025-01-07I/O 多路复用,网络编程中的select、poll、epoll的发展历史、原理详解以及代码实现(三)
上节讲到select、poll、epoll的原理详解,本节将对三者的代码实现进行介绍,此外,为了方便读者更好地对其使用场景进行理解,本节还将基于三者实现一个简单的tcp回显服务器的应用(EchoServer)。1.创建tcp回显服务器(1)创建服务器套接字intsockfd=socket(AF_INET,SOCK_STREAM,0);
- 2025-01-05反向代理模块
1概念1.1反向代理概念反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。对于客户端来说,反向代理就相当于目标服务器,只需要将反向代理当作目标服务器一
- 2025-01-05高级IO(网络)
目录五种IO模型高级IO重要概念同步通信vs异步通信(synchronouscommunication/asynchronouscommunication)阻塞vs非阻塞理解这四者的关系其他高级IO非阻塞IO(fcntl)实现函数SetNoBlock(非阻塞)轮询方式读取标准输入I/O多路转接之select初识selectselect函数
- 2025-01-04IO复用-代替多线程
select//select(maxfd,rset,wset,eset,timeout);r读,w写,e错误,timeout多长时间轮询一次//有事件就返回//rset-->uLfds_bites[_FD_SIZE/(8*sizeof(long))]//#define_FD_SIZE1024默认值1024,内核定义fd_setrfds,rset;FD_ZERO(&rfds);FD_SET(sockfd,&rfds);intmaxf
- 2025-01-02使用库函数 API 和 C 代码中嵌入汇编代码两种方式使用同一个系统调用
实验四使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用实验内容选择一个系统调用(13号系统调用time除外),系统调用列表参见torvalds/linux。参考视频中的方式使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用实验过程使用库函数API#
- 2024-12-30UDP
1.UDP协议读写函数UDP套接字是无连接协议,必须使用sendto函数发送数据,必须使用recvfrom函数接收数据,发送时需指明目的地址。sendto函数与send功能基本相同,recvfrom与recv功能基本相同,只不过sendto函数和recvfrom函数参数中都带有对方地址信息,这两个函数是专门为UDP协议提供的。
- 2024-12-29消息传递机制(转载)
进程间的通信方式——pipe(管道)-CSDN博客1.进程间通信每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提
- 2024-12-28万字解读文件IO基础与深入
目录一、文件I/O基础1.man命令2.文件基本操作(4个函数)3.文件描述符4.open函数5.write函数6.read读文件函数7.close关闭文件函数8.lseek函数9.文件操作练习二、文件I/O深入1.linux系统如何管理文件1.1静态文件与inode1.2文件打开时的状态2.返回错误处理2.1errno
- 2024-12-23php网络编程swoole websocket
服务端:<?phpuseSwoole\WebSocket\Server;//创建HTTP服务器$server=newServer('127.0.0.1',8888,SWOOLE_PROCESS,SWOOLE_SOCK_TCP);$server->on('start',function($server){//print_r($server);echo"Swoolewebsock
- 2024-12-23反向代理模块开发
1概念 1.1反向代理概念反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。对于客户端来说,反向代理就相当于目标服务器,只需要将反向代理当作目标服务器
- 2024-12-20Unix C:系统调用IO
文件描述符FILE结构体查看stdio.h头文件中,有FILE结构体的定义://stdio.htypedefstruct_iobuf{char*_ptr;//文件输入的下一个位置int_cnt;//当前缓冲区的相对位置char*_base;//文件初始位置int_flag;//文件标
- 2024-12-19获取任意一个进程的共享内存的fd对应的资源,增加引用,实现数据的接管——包含非export的内核函数的模块内使用
一、背景在之前的 memfd配合跨进程传输fd的例子及原理-CSDN博客博客里,我们讲了跨进程通过socket传递fd的底层实现原理,并且给了一个例子来替代socket传输和转换部分的逻辑,直接使用底层fd和file的接口来通过模块ko来实现跨进程的fd的转换和重新映射。这篇博客里,我们继续fd的
- 2024-12-15linux文件IO:epoll
poll和select的改进版,在一个程序需要处理数百个文件描述符时很有用2.6内核引入epoll机制,解决了poll和select的性能问题,并加入了一些新特性poll和select每次调用都需要所有被监听的文件描述符,内核需要遍历所有的文件描述符,当数量变大时,性能消耗巨大epoll将监听注册从实际监听中
- 2024-12-152.1.3-2 第二次Reactor代码(百万并发测试过程的报错信息)
零、概述做服务器性能测试的时候,并发量、QPS(每秒处理多少请求)、时迟(延迟,每个请求多长时间返回)、测试用例(业务代码,发什么数据和回什么数据)这四组都是重要的参数。并发→网络io的并发,是服务端最基础的技能。备注:研发和运营的数据不相同。一、报错信息serverip:192
- 2024-12-15【Linux】poll函数
poll和select的区别不大,主要是poll没有连接数限制,因为它用的链表实现#include<poll.h>intpoll(structpollfd*fds,nfds_tnfds,inttimeout);structpollfd{intfd;//要监控的文件描述符,如果fd为-1,表示内核不再监控shortevents;//
- 2024-12-11反向代理模块开发
1概念1.1反向代理概念反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。对于客户端来说,反向代理就相当于目标服务器,只需要将反向代理当作目标服务器一
- 2024-12-10ARM - 海思 - HI35XX串口调试
转自: https://blog.csdn.net/li_wen01/article/details/86529523 我测试使用的是海思HI3520DV400设备,它总共有三个串口,官方提供的SDK只使能了UART0,也就是调试串口。如果要使用UART1或是UART2,用户需要自己手动设置。一)使能串口最直接的方式就是将设备树中对应uart的statu
- 2024-12-09【Linux探索学习】第二十弹——基础IO:深入理解C语言文件I/O与Linux操作系统中的文件操作
Linux学习笔记:https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482前言:文件I/O(输入输出)操作是现代计算机系统中的重要组成部分,几乎所有的程序都需要与文件进行交互。无论是读取配置文件、写入日志文件,还是处理用户数据,文件操作都是不可避
- 2024-12-08PAWNYABLE kernel race condition 笔记
漏洞点在于,open的时候mutex的检查和设置不是原子操作。staticintmodule_open(structinode*inode,structfile*file){printk(KERN_INFO"module_opencalled\n");if(mutex){printk(KERN_INFO"resourceisbusy");return-EBUSY;}mutex=