- 2024-10-25perror和fprintf有什么区别
perror和fprintf是两个不同的函数,虽然它们都可以用于输出信息,但有几个关键的区别:1.功能和用途perror:专门用于输出与系统错误相关的消息。根据全局变量errno的值生成相应的错误信息。自动处理错误描述,方便用于错误处理场景。fprintf:用于格式化输出任
- 2024-10-19Linux C语言TCP协议实战
文章目录1.TCP简介2.搭建框图3.相关函数介绍3.1socket函数3.2bind函数3.3listen函数3.4accept函数3.5connect函数3.6send函数3.7recv函数3.8其他函数4.实战4.1一对一模型4.1.1server.c4.1.2client.c4.1.3终端结果4.2多进程模型4.2.1server.c4.2.2cl
- 2024-09-18C++基于select和epoll的TCP服务器
select版本服务器#include<arpa/inet.h>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<string>#include<pthread.h>#include<sys/select.h>
- 2024-08-06Linux系统编程—文件操作IO
此文章为本人学习笔记,若有错误求指正,自学推荐书籍《Linux/UNIX系统编程手册》,需要该书籍pdf文档可无偿分享。文件概述在UNIX/Linux系统中,一切皆为文件。这不仅包括普通文件和文件夹,还包括设备、进程、网络连接等。所有文件在系统中都是通过文件描述符来标识和操作的。文件分
- 2024-07-01一、errno perror strerror的使用
在Linux中,errno是一个非常重要的全局变量,用于存储系统调用的错误代码。以下是关于errno的详细解释:定义和用途:1.errno是一个预定义的外部整型(int)变量,通常包含在<errno.h>头文件中。2.当系统调用或库函数发生错误时,它们通常会设置errno以指示发生了哪种错误。3.errno的值仅在函
- 2024-06-12模拟epoll的饥饿场景
说明一直听说epoll的饥饿场景,但是从未在实际环境中面对过,那么能不能模拟出来呢?实际的情况是怎样呢?模拟步骤基于epoll写一个简单的tcpechoserver,将每次read返回的字节数打印出来模拟一个客户端大量写入测试其他客户端能否正常返回Server代码#include<stdio.h>#include
- 2024-06-03C++代码实现一个简易http服务端,返回给客户端一张图片
注意事项sprintf读取字符串时,遇到\0会结束,所以不能用sprintf来读取*pictureBuffervoid*memcpy(void*str1,constvoid*str2,size_tn),str2会覆盖str1里的内容代码#include<func.h>charpictureBuffer[150*1024];charbuffer[200*1024];intmain(){in
- 2024-03-26Unix系统上使用semop函数写一个信号量函数,确保只有一个进程能访问临界资源
semop是Unix系统调用,用于操作信号量集。信号量是一种用于保护共享资源或临界区域免受并发访问的同步原语。以下是一个使用semop的简单示例,确保只有一个进程能访问临界资源:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<
- 2023-12-07实验四 Web服务器2
server.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#definePORT8080#defineBUFFER_SIZE1024intmain(){ int
- 2023-10-18C语言 mmap完成文件读写
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/mman.h>#include<fcntl.h>#include<unistd.h>intmain(){//打开文件进行读写intfd=open("test.log",O_RDWR|O_CREAT,0600);
- 2023-08-20「C」错误处理
错误处理说实话这一章节看的云里雾里,而且目前也没有能用到它的场景.先记下来,以后用的时候方便查看.编写无错程序的方法有两种,但只有第三种写程序的方法才行得通.<assert.h>:诊断voidassert(scalarexpress);assert是一个按照函数的使用方法设计的宏.需要传入一
- 2023-07-30C++ error学习
转自:https://blog.csdn.net/NiuYoohoo/article/details/849304041、介绍errno是用于错误指示的预处理器宏,数个标准库函数通过写入正整数到errno指示错误。程序启动时errno的值为0,而且尽管不管在错误发生与否时,允许写入正整数到errno。2、例子#include<iostrea
- 2023-06-28bind:success 但是无法执行下面的操作
perror:success但是无法执行后续操作intsockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd<0) { perror("socketerr"); return-1; } structsockaddr_insaddr; saddr.sin_family=AF_INET; saddr.sin_port=htons(atoi(argv[2])); saddr.sin_addr.s_
- 2023-05-08学Linux学到的C函数
strncmp()库文件:string.hstrncmp函数为字符串比较函数,字符串大小的比较是以ASCII码表上的顺序来决定,此顺序亦为字符的值。其函数声明为intstrncmp(constchar*str1,constchar*str2,size_tn);功能是把str1和str2进行比较,最多比较前 n 个字节,若str1与str2的
- 2023-03-14tcp网络编程实例1
tcp_server.c#include<signal.h>#include<stdio.h>#include<errno.h>#include<unistd.h>#include<stdlib.h>#include<time.h>#include<string.h>#include
- 2023-02-28strerror(介绍与使用)
strerror:把错误码,翻译成错误信息