1 | /************************************************************************* |
read
1 | /************************************************************************* |
多进程拷贝大文件
实现拷贝一个超大文件,为提高效率,可以采用多进程并行拷贝的方法实现;假设有n个进程进行拷贝,每个进程拷贝len/n个字节,最后一个进程拷贝剩下的len%(len/n)个字节。
为了降低复杂度,可以用mmap来进行拷贝,通过指针操作内存地址,设置内个进程拷贝的起始,结束位置,使用MAP_SHARED选项将内存中所做的修改反映到物理磁盘上。
1 | /************************************************************************* |
使用FIFO实现本地聊天室
1、服务器端要有一个公共的共享的管道,用来实现用户到服务器之间的通信,并创建一个链表,用于存储用户登录信息。
2、服务器端要跟每一个用户建立一个管道用于服务器与用户之间的通信,并且进行用户数据转发,当用户退出之后,这条管道自动删除。
3、数据包的格式,首先是协议号,源id,目标id,数据内容
服务端思路
1.先创建一个公共管道,接收客户端的消息
2.根据用户登陆后发出的第一个包来创建以用户名命名的管道文件
3.用一个链表来存储用户的登录列表,随时增添
4.根据用户发送数据包的id号来判定将要执行什么操作,1是登录,2是聊天,4.是退出登录
5.转发数据包,是直接发以目标用户名命名的管道文件,但首先要确认登录列表里面有没有目标用户。
6.随着用户发出退出登录的包,把用户的登陆信息,管道文件删掉
客户端思路
1.登陆的时候输入用户名
2.随着用户登录打开公共信道,向服务器发送登录消息,
3.一边接受服务器发来的消息,一遍等待用户输入信息
4.把用户的信息自动封装成数据包的格式发给服务器
头文件
1 | /************************************************************************* |
服务器
1 | /************************************************************************* |
客户端
1 | /************************************************************************* |