C语言编程指南
文章平均质量分 68
Linux下的C语言编程相关
顺啾咪啾
linux c研发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解决implicit declaration of function ‘strptime’ [-Wimplicit-function-declaration]
解决implicit declaration of function ‘strptime’ [-Wimplicit-function-declaration]在Makefile里面加上三个宏就可以解决使用strptime函数未声明的编译警告我的Makefile模板如下:SOURCE = $(wildcard *.c)ECHO = @TARGET = offline_toolall: clean $(TARGET)#CC = gccCFLAG原创 2020-11-04 19:36:13 · 3229 阅读 · 0 评论 -
readn/writen(接收/发送) 方法封装
前言通常文件的I/O与字节流套接字上的read和write函数所表现的行为不一样,有时候字节流套接字上调用read和write返回的字节数可能比请求的大小要小,而这样并不表示一个错误,如果在内核中用于套接字的缓冲区满了达到上限了,这时候就需要再次调用read或write函数,因此封装了如下的两个小函数。在封装的函数里面如果遇到EINTR错误(说明调用被中断)或EAGAIN(可以尝试再读一次),这时候应该继续读或写,以此来处理剩下的字节/* code from UNIX Network Programi原创 2020-05-15 10:57:35 · 313 阅读 · 0 评论 -
posix_memalign函数详解以及使用时的注意事项
前言在编写可移植的代码的时候,所有的类型都该自然对齐,因为不对齐会导致性能下降,在大多数情况下,编译器和C库透明地帮你处理对齐问题。POSIX 标明了通过malloc( ), calloc( ), 和 realloc( ) 返回的地址对于任何的C类型来说都是对齐的。在Linux中,这些函数返回的地址在32位系统是以8字节为边界对齐,在64位系统是以16字节为边界对齐的。但是对于更大的边界,例如页面,程序员需要动态的对齐。因此,POSIX 1003.1d提供一个叫做posix_memalign( )的函数:原创 2020-05-12 15:23:41 · 18336 阅读 · 4 评论 -
下回接着看的优秀文章
服务器开发常用模型1、C10K 问题:http://www.kegel.com/c10k.html#frameworks2、经典服务器架构模型比较:https://kb.cnblogs.com/page/173038/3、高性能IO设计模型概述:http://www.yeolar.com/note/2012/12/15/high-performance-io-design-patterns/...原创 2020-05-11 18:00:46 · 180 阅读 · 0 评论 -
Linux下gmtime、gmtime_r、localtime、localtime_r函数详解
函数功能介绍使用man gmtime或man localtime都可以的得到这几个函数的介绍。原型如下:struct tm *gmtime(const time_t *timep);struct tm *gmtime_r(const time_t *timep, struct tm *result);struct tm *localtime(const time_t *timep);struct tm *localtime_r(const time_t *timep, struct tm *res原创 2020-05-11 12:01:55 · 7056 阅读 · 0 评论 -
Linux下使用localtime函数可能会严重影响性能
本地时间相关函数localtime严重影响性能由于locate相关的函数大部分都会访问本地的时区配置,在环境变量缺失的情况下就会去etc目录下找timezone相关的文件去获取,所以在频繁访问的情况下,比如大量写带时间戳的日志,就会严重影响性能,单线程也就只能做到10万次左右per second,所以在高速环境下一定要避免使用localtime之类的和时区相关的函数在实际的代码中,可以使用gmtime来代替localtime,比如获取当前时间戳可以用如下代码:struct tm today;time原创 2020-05-11 11:12:05 · 1695 阅读 · 0 评论 -
strict alias规则约束
strict alias规则约束可能带来的问题1、现象:在Linux下的c开发过程中,发现有的模块、函数在编译时加上-O2编译参数时,运行的结果就不对了2、原因:是-O2 默认开启了strict alias选项,我们程序编写的方式不符合strict alias规范,导致编译器优化的程序和实际行为不一致。3、解决:1)修改程序使其符合strict alias规范2)关闭strict alias选项补充:strict alias规则约束下,编译器可以更好的优化代码比如:void fool(in原创 2020-05-09 19:26:09 · 323 阅读 · 0 评论 -
Linux下的通用Makefile模板
通用Makefile模板SOURCE = $(wildcart *.c)TARGET = demoall: clean $(TARGET)CC = gccCFLAGS = -W -Wall -g#CFLAGS = -O2 -Wall -rdynamicMODIFIED_D := $(shell date +%F)MODIFIED_T := KaTeX parse error: Can't use function '\"' in math mode at position 30: …T)原创 2020-05-08 20:03:02 · 269 阅读 · 0 评论
分享