自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于read返回可能为空或不完全的问题

当你发现你的的write端发送数据后,read端返回的buf为空或不完全时,而你的代码又没有逻辑上的错误时,你就要注意你的write发送的数据大小是否read的不匹配!我在昨天就仅修改了write端的代码,write的缓存有1024字节,而read的缓存仅有512字节,那么write的1024字节就不能一次发送完成,因为会存在数据被截断或接收方缓存不足的风险,所以write就会分批来发送这1024个字节,每次仅发送512字节,直到数据被发送完毕。保证数据的正确性与完整性。

2023-04-12 11:35:58 424

原创 Linux进程间通信:共享内存

共享内存就是在物理内存中开辟一片空间,让不同进程通过某种方式能够直接访问该内存块,实现进程间的数据通信。管道、FIFO或消息队列:完成数据的读写共需要四步。共享内存:完成数据的读写仅需要两步1.共享内存是最快的进程间通信的方式2. 共享内存本身并不具备同步机制,一般在使用共享内存时,我们会使用信号量、互斥量或记录锁来补充这一功能

2023-03-17 12:27:42 470

原创 Linux进程间通信:信号量

1.1 共享资源访问的流程1. 2信号量函数1.2.4PV操作流程对于sem_op取值有三种情况:1.sem_op 为负值:这表示进程希望获取临界资源的使用权。若当前可占用的资源数大于sem_op的绝对值,则用信号量值减去sem_op的绝对值,表示已被进程访问使用;若当前可占用的资源数小于sem_op的绝对值,则有两种结果:标志位设为IPC_NOWAIT,则程序出错,返回一个error:EAGAIN;未设为IPC_NOWAIT,则程序进入休眠状态直到以下任一条件满足:(1)可占用资源数大于s

2023-03-13 22:41:04 374

原创 Linux UNIX域socket,进程间通信

UNIX域套接字作用在同一台计算机上运行的两个进程间的通信。UNIX域套接字比因特尔网络套接字效率要高。它仅复制数据,不执行协议处理,不需要添加或删除网络报文头,无需计算校验和,不要产生顺序号,无需发送确认报文等等。UNIX域套接字有两种类型的套接字:字节流套接字和数据报套接字,字节流套接字类似于TCP,数据报套接字类似于UDPUNIX域套接字连接的一对套接字可以起到全双工管道的作用,是全双工的通信方式。

2023-03-10 21:59:23 2083

原创 Linux进程间通信,IPC-FIFO管道

实际上,当我们调用mkfifo创建一个FIFO命名管道的时候,内核会为这个FIFO(伪)文件创建一个缓存区,当我们对FIFO文件进行open,read,write等文件I/O操作的时候就相当于操作这个缓存区,以此来实现进程间通信。

2023-03-09 20:15:51 139

原创 Linux进程间通信,IPC-PIPE管道

管道是IPC通信中的一种最基本的通信机制,所有UNIX系统都提供此种通信机制。

2023-03-08 21:20:53 135

原创 通过信号机制,控制父子进程先后执行顺序

忽略此信号。大多数信号到来我们都可以使用这种信号处理方式,但SIGKILL,SIGSTOP绝对不能被忽略,因为它们向内核和超级用户提供了使进程终止或者停止的可靠方法。另外,某些由硬件异常产生的信号最好也不要忽略。捕捉信号。在程序在运行时,我们希望程序可以按照我们指定方式结束运行,那么我们就可以在信号到来时,调用一个用户函数,在用户函数中可以执行用户希望对这种事件进行的处理。注意,SIGKILL和SIGSTOP信号不可捕捉。执行系统默认操作。对于每一个信号,系统都设有对应的默认动作。

2023-03-07 21:50:20 508

空空如也

空空如也

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

TA关注的人

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