Linux中C/C++编程
文章平均质量分 68
chinaclock
这个作者很懒,什么都没留下…
展开
-
Linux在C语言下的时区设置与修改(一)
清理当前使用底层OS适配库代码,代码中涉及到了utc时间和本地时间转换。发现代码中时区设置有问题。每次设置时区时都会调用tzset函数,然后直接使用被初始化后的全局变量timezone去和utc时间相加减得到本地时间。但是问题来了,这样做真的ok吗?tzset的函数,反复看了关于该函数初始化tzname和timezone的使用说明。在启动时第一次调用tzset,---首先是原创 2015-02-04 20:55:28 · 6568 阅读 · 0 评论 -
理解操作系统的sleep函数
写的很形象,分享一下http://www.cnblogs.com/ILove/archive/2008/04/07/1140419.html我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(100转载 2015-09-24 16:14:18 · 9826 阅读 · 4 评论 -
Linux网络编程socket错误分析
文章未见转载出处,从http://blog.csdn.net/nellson/article/details/5669935转载 socket错误码:EINTR: 4 阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。 只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrup转载 2015-10-09 19:17:40 · 2726 阅读 · 0 评论 -
网络编程socket相关错误号及信息的获取
这里不讨论直接调用后,通过返回值返回错误号的情况,因为这种情况是比较简单的。而实际在网络编程中很多情况都是在发送和接收数据时出现了socket上有异常导致操作无法完成,而返回值只能涉及到操作相关的字节数和是否错误,并不能反映完全的错误信息。 也不讨论windows上的错误信息获取,而主要是Linux上的。 实际的常用方法如下: 方法一:strerror 这个函数以及errno全局变量是最常用原创 2015-10-09 20:06:06 · 8172 阅读 · 0 评论 -
Socket/Epoll主要流程对socket错误码正确处理
摘自:http://blog.csdn.net/whycold/article/details/48179659 注:转载一个同事的工作笔记。以下是对相关流程和socket错误码正确处理的小结。 一. Socket/Epoll主要遇到的问题: (1) 非阻塞socket下,接收流程(recv/recvfrom)对错误(EINTR/EAGAIN/EWOULDBLOCK)当成Fatal错误处理,产转载 2015-10-09 19:43:01 · 2678 阅读 · 0 评论 -
Linux 信号signal处理机制
http://oilbeater.com/2012/05/09/linux-signal/linux 信号处理机制简介鉴于后面把进程的形象给彻底毁掉了,我提前声明一下,进程是有尊严的有节操的,当然大部分人可能也看不到毁形象那一段。为什么介绍linux要从信号开始呢,当然是为了保证能讲明白,因为翻了翻书我发现这一部分是最简单的了,所以呢,就讲这个吧,顺便把之前源码阅读的东西总结一下。转载 2015-09-28 10:26:29 · 2264 阅读 · 0 评论 -
linux状态及原理全剖析
linuxTable of Contents1 linux1.1 proc filesystem1.1.1 /proc1.1.1.1 /proc/meminfo1.1.1.2 /proc/stat1.1.1.3 /proc/swaps1.1.1.4 /proc/cmdline1.1.1.5 /proc/uptime1.1.1.6 /proc/version1转载 2015-09-28 09:18:42 · 18847 阅读 · 0 评论 -
Linux在C语言下的时区设置与修改(三)
前面一直在讲tzset似乎只在初始化的时候才生效,当tzset调用多次时没用。今天稍微深入的查找了glibc中的tzset的实现,发现其实不是这么回事,其真正的实现是每次都会去解析的。为什么之前会误认为tzset无效,是由于本地进程的环境变量和全局环境变量导致的。具体的tzset的实现是tzset_internal,在这个函数中,其基本思路是:1、首先检查环境变量中的TZ环境变量是否存原创 2015-02-13 16:46:38 · 12422 阅读 · 0 评论 -
glibc代码走读笔记(一)
最近在整理底层库,遇到了不少问题都需要和glibc打交道,甚至内核的系统调用有关。这里将碰到的不熟悉的地方和有疑问的地方都记录下,方便交流和查看。首先从函数查找开始,不知道其他人是如何开始看glibc代码的,我看glibc是因为有函数实现不清,搞不懂原理。那么首先要查找函数,例如tzset函数,如果直接去按这个关键去搜,发现搜不到这个tzset的函数实现,但是搜到这么一个东西:原创 2015-02-13 16:55:39 · 2379 阅读 · 0 评论 -
Linux在C语言下的时区设置与修改(二)
前面说到是去同步时区的接口,从同步的角度来讲,如何获取被设置后的时区,还有一个接口即gettimeofday,这个接口不仅可以获取时区,posix标准似乎还很好心的在第二个参数中放置了可以用来获取时区和夏冬令时的tz参数,用于返回这两个值。事情真的有这么简单吗?墨菲定律又一次出现了,tz这个参数已经被废弃掉了,手册中已经明确说明了glibc不支持这个参数。那么实际使用这个接口,原创 2015-02-05 20:34:55 · 5218 阅读 · 0 评论 -
printf_系统调用过程分析_write() putc() 函数实现
今天测试buf吞吐率,出现了一个打印影响所有测试结论的情况。性能测试时务必尽量减少打印,这里先摘一篇文章,对printf有所了解。摘自:http://blog.csdn.net/edonlii/article/details/20135059 系统调用”是操作系统提供给用户程序进行调用的一些服务。这些服务是系统预先提供的函数,在这一点上系统调用与普通的用户程序是没有区别的。而转载 2015-12-04 16:55:00 · 1901 阅读 · 0 评论