![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统与网络编程
文章平均质量分 80
Linux系统与网络编程,个人学习笔记,总结
hello world 999
日拱一卒无有尽,功不唐捐终到海,十年磨一剑,再见顶峰相见。
展开
-
【Linux系统与网络编程】18:并发模型
相较于多进程IO,多线程共享进程空间,线程的通信变得简单、成本低、但是需要考虑线程安全的问题(互斥、锁实现)注:客户端保证在断开之前会发送完整的数据,且客户端一定会调用。原创 2023-03-30 20:45:44 · 712 阅读 · 0 评论 -
【Linux系统与网络编程】17:IO多路复用
push的速度特别快,而pop弹出有一个标准IO的系统调用输出过程(比较消耗时间),导致输出的每一个线程执行进度不是按照预期顺序进行的。:多线程,创建一个线程进行用户数据的接收,另外再创建一个线程进行sleep睡眠等待,接收数据的线程来通知睡眠线程。注:select的出现具有跨时代的意义,其将原先并发的机制由多线程、多进程的形式改为单个进程就可以实现并发管理。补充:死锁是指两个或两个以上的进程/线程因为进程推进顺序不当、或者资源数量受限,而导致的互相等待的情况。运行结果,文件的输出是没有顺序的输出,原创 2023-03-30 11:14:23 · 422 阅读 · 0 评论 -
【Linux系统与网络编程】16:Socket文件传输2
编译1.server.c与2.client.c文件,在终端窗口执行启动server程序,在server的窗口中可以看到出现了6次凑包的过程,最终数据成功写入。血的教训:如果使用fwrite写入文件出现乱码的现象,大概率是写入的。在另外一个窗口启动客户端程序,将1.server.c文件进行发送。在socket文件传输1中使用了一种在buff缓冲数组后添加。目录下(写入位置在server.c中第76行。设置出现错误,而不是文件字符集编码的问题。没什么好说的,直接上代码。的方式实现文件的传输。原创 2023-03-28 14:58:19 · 789 阅读 · 0 评论 -
【Linux系统与网络编程】15:Socket文件传输1
在socket多线程实现多客户端连接服务器进行聊天的基础上,添加文件传输功能。原创 2023-03-27 13:34:01 · 872 阅读 · 0 评论 -
【Linux系统与网络编程】14:SocketSelect
除了使用了多进程与多线程实现server对client的聊天程序,还可使用IO多路复用技术select实现多客户端连接服务器。原创 2023-03-27 00:00:26 · 612 阅读 · 0 评论 -
【Linux系统与网络编程】13:Socket多线程
注意到,server中的端口号和ip没有进行显示,这是为了简化问题在worker函数中暂时将客户端ip与端口不显示(简化参数传递过程)。10个客户端都成功连接到服务器,并且所有客户端发送的消息都被server成功响应,并且每个客户端的ip地址与port端口号都正常显示。为解决线程对文件描述符的竞争问题(进程中多个线程共享空间),创建文件描述符数组、创建线程数组解决线程竞争问题。在创建结构体数组、创建线程数组之后,所有客户端发送的消息都得到了响应,线程竞争问题解决。10个客户端全部成功连接上服务器,原创 2023-03-26 21:04:17 · 1117 阅读 · 0 评论 -
【Linux系统与网络编程】12:Socket多进程
调用socket、connect、bind、listen、accept、send、recv。原创 2023-03-14 14:53:15 · 346 阅读 · 0 评论 -
【Linux系统与网络编程】10:多线程
操作系统调度器执行单元用户空间的基础虚拟抽象注:进程感觉自己独占了内存,线程感觉自己独占了处理器。原创 2023-03-14 08:13:00 · 413 阅读 · 0 评论 -
【Linux系统与网络编程】09:消息队列
用几个进程向消息队列中发送消息,然后使用其他几个进程从消息队列中获取消息,返回值:成功返回识别号,失败返回-1。原创 2023-03-12 17:03:41 · 82 阅读 · 0 评论 -
【Linux系统与网络编程】08:信号量
mmap映射的是磁盘中的文件,而共享内存是将内存映射到用户的进程空间中。原创 2023-03-11 17:31:08 · 204 阅读 · 0 评论 -
【Linux系统与网络编程】07:管道
注:popen如果没有pclose则将成为僵尸进程。pipe创建管道实现亲缘进程之间的通信。原创 2023-03-11 15:47:02 · 954 阅读 · 0 评论 -
【Linux系统与网络编程】06:共享内存
可以利用flock系统调用实现,当有一个进程在文件中进程写入操作时,其他进程无法在该文件中进行写操作(只能进行读操作)。出现问题的原因是:执行中的进程没有保障,进程之间发生竞争(同一时刻多个进程对内存进行读写操作,发生在多核处理器)允许两个或多个进程共享一个给定的存储区,由于无需复制数据,这是最快的IPC进程间通信。可以利用条件变量实现线程同步机制(进程同步),从而避免资源抢占竞争。,却会出现问题如图结果为50007661(错误结果)。成功输出结果,前100项求和的结果为5050,共享内存实现多进程计算,原创 2023-03-10 11:31:36 · 409 阅读 · 0 评论 -
【Linux系统与网络编程】05:多进程
注:调用execl系统调用时,原有的进程空间会被替换出去,替换成需要运行程序的进程空间(代码段部分、数据部分)。关于fork写拷贝机制节省资源:创建子进程时,将空间分成很多个页,如果在某页中有写操作则将该页复制进行修改。进程调度器,是一个内核子系统,把有限的处理器资源分配给系统中的各个进程(决定哪个进程来运行)。注:wait能够帮助父进程监控子进程的结束状态,只有子进程结束之后,父进程才会结束。打开文件夹中不存在的文件,自动使用vim打开,写入test1.c。自动编译并运行target.c得到结果,原创 2023-03-10 11:32:05 · 302 阅读 · 0 评论 -
【Linux系统与网络编程】04:阻塞与非阻塞IO
IO多路复用\转接:select、poll。原创 2023-03-10 11:29:15 · 72 阅读 · 0 评论 -
【Linux系统与网络编程】03:文件夹操作
而不必重新open文件,可以重新设置读、写、追加、非阻塞等标志。不同文件显示出来对应的颜色也是不一样的。每个打开的文件都会记录当前的读写位置,改变已打开文件的属性。原创 2023-03-10 11:29:41 · 323 阅读 · 0 评论 -
【Linux系统与网络编程】02:文件操作
字节无法一次性读完,两次buff读的中间出现会一些特殊的符号(数组的结束位置。为了解决上述问题,可以通过临时将。数组后一个位置被覆盖的问题(数组的最后一个元素赋值为。原创 2023-02-13 10:49:57 · 451 阅读 · 0 评论 -
【Linux系统与网络编程】01:命令行解析
optstring关于optstring:是一个由所有合法的可选字符所组成的字符串单个字符,表示选项没有任何选项参数单个字符后接一个冒号,表示该选项后必须跟一个参数值(参数仅跟在选项后or以空格隔开)且该参数的指针赋给optarg单个字符后接两个冒号,表示该选项后可以带参数也可以不带(但参数必须紧紧跟在选项后不能以空格隔开),参数指针赋给optargv。原创 2023-02-10 08:48:35 · 330 阅读 · 0 评论