自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络编程速递小项目

实现账号的注册、登录、注销、修改用户密码功能,当登录成功时可以寄快递、查快递、修改快递信息、取消订单等功能。实现账号的注册、登录、注销、修改用户密码功能,当登录成功时可以查快递、送快递、查看历史订单等功能。//0:表示未完成订单 1:表示已完成订单。//用户类型:1:用户 2:快递员。//用户类型:1:用户 2:快递员。//0:表示未完成订单 1:表示已完成订单。

2024-09-15 18:32:15 1904

原创 c语言快递小项目

struct pack_head{ int fd;//通信的文件描述符 unsigned char type; //消息类型 unsigned char usertype; //用户类型:1:用户 2:快递员 char name[32]; //用户名 char paaswd[32]; //密码 char buf[32]; //调试信息 struct order_msg msg; //单号信息};struct order_

2024-09-14 19:59:19 1602

原创 udp聊天室

if ((N->next->addr.sin_addr.s_addr == saddr.sin_addr.s_addr) && (N->next->addr.sin_port == saddr.sin_port)) //判断是否存在该客户端数据。//清空输入进来的内容。if (strcmp(data.type, "send_t") == 0) //聊天,跳过用户。

2024-09-12 11:55:32 1674

原创 IO多路复用

select:适用于小规模应用,简单易用但有文件描述符限制。poll:比select更灵活,适用于中等规模应用,但性能瓶颈仍然存在。epoll:最适合大规模、高并发应用,性能优越但在 Linux 上才可用。每有一个客户端连接创建一个进程进行通信创建套接字:使用socket()函数创建一个用于通信的套接字。绑定地址:用bind()函数将套接字绑定到指定的 IP 地址和端口上。监听连接:调用listen()函数,使服务器开始监听客户端的连接请求。接受连接:使用accept()

2024-09-10 15:20:37 1099

原创 网络编程及io多路复用

1.struct pollfd *fds: 关心的文件描述符数组,大小自己定义。3. timeout: 超时检测 (毫秒级):如果-1,阻塞 如果0,不阻塞。,响应键盘事件,输入鼠标事件,响应鼠标事件(两路IO)返回值: <0 出错 >0 表示有事件产生;功能: 监视并等待多个文件描述符的属性变化。2. nfds: 最大文件描述符个数。

2024-09-09 17:15:35 381

原创 liunx io模型多路复用

若设置多个进程/线程,分别处理一条数据通路,将新产生进程/线程间的同步与通信问题,使程序变得更加复杂;通过代码实现:输入鼠标的时候, 响应鼠标事件, 输入键盘的时候, 响应键盘事件 (两路IO)应用程序中同时处理多路输入输出流,若采用阻塞模式,得不到预期的目的;先构造一张有关描述符的表(最大1024),然后调用一个函数。函数返回时告诉进程哪个描述符已就绪,可以进行I/O操作。将关心的文件描述符添加到表中 FD_SET。nfds:关注的最大的文件描述符。构造一张关于文件描述符的表。当这些文件描述符中的。

2024-09-09 17:03:59 464

原创 网络编程客户端通信

【代码】网络编程客户端通信。

2024-09-05 18:47:05 285

原创 IO信号灯集

把信号灯集加到共享内存实现同步:输入输出quit结束。

2024-09-03 15:48:00 343

原创 io信号

3)司机捕捉SIGTSTP(代表到达终点站)信号,向售票员发送SIGUSR1信号,售票员打印(please get off the bus)2)售票员捕捉SIGQUIT(代表停车)信号,向司机发送SIGUSR2信号,司机打印(stop the bus)1)售票员捕捉SIGINT(代表开车)信号,向司机发送SIGUSR1信号,司机打印(let's gogogo)4)司机等待售票员下车,之后司机再下车。用信号的知识实现司机和售票员问题。

2024-08-31 08:41:09 2154

原创 有名管道的特点及代码

有名管道可以通过路径名来指出,并且在文件系统中可见,但内容存放在内存中。但是读写数据不会存在文件中,而是在管道中。有名管道可以使互不相关的两个进程互相通信。进程通过文件IO来操作有名管道。不支持如lseek() 操作。有名管道遵循先进先出规则。

2024-08-30 11:40:37 358

原创 io 互斥

通过互斥锁可以实现互斥机制,主要用来保护临界资源,每个临界资源都由一个互斥锁来保护,线程必须先获得互斥锁才能访问临界资源,访问完资源后释放该锁。循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用。:多个线程在访问临界资源时,同一时间只能一个线程访问。

2024-08-29 14:58:52 432

原创 创建一个守护进程,循环间隔1s向文件中写入一串字符“hello”

原因:子进程继承了父进程的一些已经打开了的文件,这些被打开的文件可能永远不会被 守护进程访问,但它们一样占用系统资源,而且还可能导致所在的文件系统无法被卸载。子进程继承了父进程的文件权限掩码,给该子进程使用文件带来一定的影响,因此把文件 权限掩码设置为0,可以增强该守护进程的灵活性。4.函数说明:chdir() 将进程当前的工作目录改变成以参数路径所指的目录4.重设文件权限掩码。让子进程成为会话组组长并且脱离终端:为了让子进程完全脱离终端;目的:增大进程创建文件时权限,提高灵活性;5. 关闭文件描述符。

2024-08-28 14:21:19 933

原创 标准io跟文件io的区别及一些函数的功能及参数

默认打开三个流:stdin/stdout/stderr。写文件:fputc/fputs/fwrite。在posix中定义的一组用于输入输出的函数。在C库中定义的一组用于输入输出的函数。默认打开三个文件描述符:0 1 2。围绕文件描述符进行操作,非负整数。可以操作除了目录以外任何类型文件。围绕流进行操作,FILE*定位操作: rewind/关闭文件: close。定位操作: lseek。关闭文件: flose。

2024-08-27 10:15:24 115

原创 简单的时间录入代码

题目要求:编程读写一个文件test.txt,每隔1秒向文件中写入一行。该程序应该无限循环,直到按Ctrl-C中断程序。

2024-08-24 08:50:53 1796

原创 二叉树的遍历方法及代码

【代码】二叉树的遍历方法及代码。

2024-08-22 15:50:27 455

原创 双向链表如何实现插入

【代码】双向链表如何实现插入。

2024-08-21 14:19:15 808

原创 使用Git的基本方式

合并(Merge):合并是将一个分支的更改合并到另一个分支的操作。当一个分支的开发任务完成后,可以将其代码合并到主分支或其他目标分支中。它可以是本地仓库(在开发者的本地机器上)或远程仓库(在服务器上)。推送(Push):推送是将本地仓库的更改上传到远程仓库的操作。它将本地仓库的更改同步到其他开发者或共享的远程仓库中。拉取(Pull):拉取是从远程仓库获取最新代码的操作。它将远程仓库的更改合并到本地仓库中。撤销(Undo):Git提供了撤销操作的能力,可以恢复之前的提交或将代码还原到之前的状态。

2024-08-19 13:50:11 603

原创 Linux安装工具

sudo apt-get upgrade 软件包名:将系统中指定的软件包升级到最新的版本。dpkg:离线安装,安装本地包,不能检查软件包的依赖关系,不关系仓库内的软件。sudo apt-get --purge remove:完全卸载软件包。sudo apt-get autoremove 软件包名:卸载软件。sudo apt-get remove 软件包名:卸载软件。sudo dpkg -s 软件包名:显示软件的安装状态。sudo dpkg -L 软件包名:显示软件的安装路径。dpkg -i 软件包全称。

2024-08-12 19:22:23 145

原创 编译方法及工具

步骤:代码写好后,先通过gcc -g进行编译代码,没有错误后,可以通过gdb a.out进行调试,输入l查看文件内容,通过b设置断点,输入r进行运行,n或s进行单步调试,q退出。动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作。链接库文件,将不可执行的二进制文件转换成可执行的二进制文件。#开头内容,展开头文件,替换宏定义,不会进行语法检查。检查语法错误,词法错误,将.i文件转换成.s汇编文件。make:工程管理器,顾名思义,是指管理较多的文件。

2024-08-12 14:05:55 491

原创 常见的学生管理系统

printf(" * S=按学号查询学生成绩 *\n");void Sort(struct score s[50], int n) // P=按平均成绩由高到低排序。void Search(struct score s[50], int n) // S=按学号查询学生成绩。void Type(struct score s[50], int *n) // T=成绩录入。

2024-08-10 18:30:49 1359

空空如也

空空如也

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

TA关注的人

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