- 博客(66)
- 收藏
- 关注
原创 setsockopt的作用
TCP连接关闭后,端口会进入TIME_WAIT状态(通常2分钟),在此期间无法重新绑定。允许在同一端口上快速重启服务器,即使该端口处于TIME_WAIT状态。对于开发阶段的网络程序,设置这个选项是非常推荐的做法。允许多个socket绑定到相同的IP地址和端口组合。- 选项值的指针(这里传递1表示启用)- 表示在socket级别设置选项。: 要设置的socket文件描述符。- 设置地址重用和端口重用选项。// 设置socket选项。
2025-10-28 11:10:56
247
原创 B/S C/S模型对比
特性C/S 结构B/S 结构客户端需要安装专用客户端软件只需标准网页浏览器部署维护困难,需逐个安装升级容易,只需更新服务器跨平台性差,需为不同系统开发极佳,与操作系统无关用户体验好,响应快,界面丰富一般,受网络和浏览器影响安全性相对较高,采用专用协议挑战较多,需防范Web攻击离线操作支持基本不支持(PWA等技术在改善)典型应用大型游戏、企业内部系统电子商务、信息门户、在线应用。
2025-10-27 19:41:08
527
原创 linux - 网络编程
整个封装过程就像“俄罗斯套娃”,每一层都在上一层的数据外面加上自己的“信封”(头部)。发送端 (封装):[ 应用层数据 ] -->[ TCP头部 | 应用层数据 ] -->[ IP头部 | TCP头部 | 应用层数据 ] -->[ 以太网头部 | IP头部 | TCP头部 | 应用层数据 | 以太网尾部 ] -->010101010100101010111010101010101... (物理比特流)各层数据单元名称:数据 / 消息段包 / 数据报帧比特流。
2025-10-27 19:32:59
590
原创 pthread_cond_signal和pthread_cond_broadcast的区别
signal:一对一的通知,效率高broadcast:一对多的通知,适合需要通知所有等待者的场景根据具体需求选择,在满足功能的前提下优先使用signal。
2025-10-26 19:51:16
418
原创 linux - 线程注意事项
关于第4点:多线程t1 t2 t3,t2中调用fork,子进中只有调用fork的线程t2存在,其他线程退出了。关于第5点:多线程中,每个线程都可能处理信号,随机。办法:可以通过设置线程的屏蔽字来选择处理信号。
2025-10-24 15:22:07
128
原创 linux - 线程属性
在 Linux 中,线程属性允许你在创建线程时控制线程的各种特性。通过设置线程属性,你可以定制线程的行为,比如分离状态、栈大小、调度策略等。
2025-10-24 14:53:37
316
原创 linux - 线程-进程控制原语对比
特性进程线程数据共享困难,需要 IPC简单,天然共享(全局变量、堆)创建/销毁开销大小稳定性/隔离性高,一个进程崩溃不影响其他进程低,一个线程崩溃可能导致整个进程崩溃同步复杂度高,需要使用复杂的 IPC 机制低,有丰富的线程同步原语(互斥锁、条件变量等)适用场景需要安全隔离的任务(如浏览器标签页)、独立的后台服务高并发 I/O、计算密集型任务的并行化、需要频繁数据交换的模块如何选择?需要强隔离和安全性,或者任务本身就是独立的程序 ->使用进程。需要高性能和低延迟的通信,任务间需要。
2025-10-24 13:47:30
1019
原创 linux - 线程分离pthread_detach
在 Linux 中,是一个重要的线程管理函数,用于将线程标记为"分离状态"。让我详细解释这个函数的使用方法和原理。
2025-10-24 13:38:15
784
原创 linux - 线程
特性进程线程PCB 位置内核中 (内核中 (PCB 数量每个进程一个每个线程一个内存空间独立的mm_struct共享父进程的mm_struct资源开销大小创建速度慢快核心要点:在 Linux 中,线程和进程都是用表示的,区别主要在于资源共享的程度。所有都存在于内核空间,由内核统一调度和管理。
2025-10-23 15:44:32
221
原创 linux - 守护进程
守护进程是运行在后台的一种特殊进程,它没有控制终端,不与用户直接交互。常见的守护进程包括:Web服务器(httpd)数据库服务器(mysqld)计划任务(crond)系统日志(syslogd)怎么理解使用systemd管理守护进程?就是把你的守护进程从一个“自力更生、自生自灭”的孤儿,变成了一个在“五星级托管中心”里被精心照料的孩子。systemd是托管中心:提供标准化的启动、停止、重启、监控、日志收集、依赖管理、资源限制等服务。你的程序是孩子。
2025-10-23 14:39:26
856
原创 linux - 借助SIGCHLD信号回收子进程
/ 关键:忽略停止/继续。SIGCHLD信号在进程状态改变时(停止 运行 终止)都会发送信号,只需要子进程终止的时候发送信号,父进程回收。// 关键:忽略停止/继续。printf("🎯 SIGCHLD信号处理器设置成功\n");perror("❌ sigaction失败");,父进程会收到这个信号。// 设置信号处理器。
2025-10-22 17:07:29
282
原创 linux - 忽略信号
简单但可移植性较差- 现代、推荐的方式信号掩码- 阻塞信号而非忽略不能忽略SIGKILL和SIGSTOP信号在真实项目中,推荐使用函数,因为它提供了更好的控制和可预测的行为。
2025-10-21 20:07:24
239
原创 linux - alarm 、setitimer
是 Linux 系统中用于设置间隔定时器的系统调用函数,它比传统的alarm()函数更灵活,可以设置多种类型的定时器。
2025-10-21 19:42:57
706
原创 linux - 信号
信号是 Linux 系统编程中处理异步事件的基础。理解信号的产生、递送和处理流程,熟练掌握sigactionkill等关键函数,是编写健壮、可靠的系统程序的关键一步。从简单的Ctrl+C处理到复杂的进程间通信和同步,信号无处不在。
2025-10-21 13:47:30
695
原创 linux - 信号4要素
常用:信号1 2 3 7 8 9 10 11 12 13 14 15 17。信号17:子进程状态发生变化,父进程会收到,但默认忽略。信号18、信号19结合使用。
2025-10-20 20:22:52
175
原创 linux - 进程间通信:mmap 父子进程通信
在 Linux 中,使用mmap进行父子进程通信是一种高效的进程间通信方式。mmap可以将文件或匿名内存映射到进程的地址空间,父子进程通过共享这个映射区域来实现通信。
2025-10-20 14:31:51
312
原创 linux - 进程间通信:存储映射I/O (*重要 mmap注意事项)
【代码】linux - 进程间通信:存储映射I/O (*重要 mmap注意事项)
2025-10-20 11:01:57
90
原创 linux - 进程间通信:存储映射I/O(*mmap/munmap重要)
存储映射I/O是一种强大的技术,它通过将文件“投影”到内存,模糊了内存和存储设备之间的界限,从而提供了高效、直观的文件访问方式。它是现代操作系统中实现高性能I/O和进程间通信的基石之一。你的需求应选择的标志组合多个进程共同编辑同一个文件,且修改需要保存`PROT_READPROT_WRITE进程间通信(共享内存)`PROT_READPROT_WRITE加载一个动态库(代码段)通常是 `PROT_READPROT_EXEC读取一个文件,并可能进行一些不会影响原文件的临时修改。
2025-10-20 10:06:43
845
原创 linux - IPC进程间通信 :文件
读普通文件不会阻塞,如果写之前就去读,直接返回len = 0,不会阻塞等数据,读不到数据。无血缘关系的进程,同样可以访问同一个文件。
2025-10-19 12:45:29
164
原创 linux -命名管道fifo的阻塞行为
操作阻塞模式非阻塞模式读端 open()阻塞直到有写端打开立即返回写端 open()阻塞直到有读端打开立即返回(无读端时失败)read()阻塞直到有数据无数据时立即返回 EAGAINwrite()缓冲区满时阻塞缓冲区满时返回 EAGAIN。
2025-10-19 12:19:55
418
原创 linux - IPC进程间通信:命名管道 FIFO
命名管道是一种特殊的文件,它提供一个先进先出(First In First Out)的数据流。与匿名管道不同,命名管道有文件名,可以在文件系统中看到,允许无亲缘关系的进程进行通信。
2025-10-19 12:08:00
158
原创 linux - IPC进程间通信:管道实现 ls | wc -l功能
【代码】linux - IPC进程间通信:管道实现 ls | wc -l功能。
2025-10-18 20:37:08
71
原创 linux - IPC进程间通信:管道
参数:fd[0]读端 fd[1]写端。返回:0成功 -1失败 errno。仅血缘关系进程间可用 如父子进程。pipe函数:创建,并打开管道。
2025-10-18 20:25:24
157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅