
unix系统编程
文章平均质量分 66
peter_cloud
这个作者很懒,什么都没留下…
展开
-
pthread_key_t和pthread_key_create()的使用
下面说一下线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的。这就是线程存储的意义。下面说转载 2012-01-09 15:26:19 · 397 阅读 · 0 评论 -
sync/fsync/fdatasync的简单比较
之前在研究MySQL的一个参数innodb_flush_method时,就涉及到了fsync/fdatasync这些系统调用[system call](什么是系统调用?它与库函数的区别在哪?参见这里)。接下来就简单的分析一下sync/fsync/fdatasync的区别。 sync():int sync( void )这就是它的原型,A call to this functi转载 2014-01-10 13:40:19 · 602 阅读 · 0 评论 -
利用posix_fadvise清理系统中的文件缓存
利用posix_fadvise清理系统中的文件缓存leoncom c/c++,unix2011-08-03当我们需要对某段读写文件并进行处理的程序进行性能测试时,文件会被系统cache住从而影响I/O的效率,必须清理cache中的对应文件的才能正确的进行性能测试。通常清理内存可以采用下面的这条命令,但这条命令只有root才能使用,另外一方面这个会清理所有的cache,也转载 2014-01-10 13:29:30 · 715 阅读 · 0 评论 -
RPC 编程
简介任何 RPC 客户机-服务器程序的重要实体都包括 IDL 文件(接口定义文件)、客户机 stub、服务器 stub 以及由客户机和服务器程序共用的头文件。客户机和服务器 stub 使用 RPC 运行时库通信。RPC 运行时库提供一套标准的运行时例程来支持 RPC 应用程序。了解运行时例程的内部情况有助于进一步了解 RPC 编程。在一般的应用程序中,被调用的过程在相同的地址空间中运行,并转载 2013-07-04 09:46:45 · 666 阅读 · 0 评论 -
linux 系统函数之 (localtime, localtime_r, strftime)
首先介绍一下localtime和localtime_r的区别。 The localtime() function converts the calendar time timep to broken-down time representation, expressed relative to the user's specified timezone.原创 2013-07-12 12:07:43 · 4592 阅读 · 0 评论 -
linux 系统函数之 (dirname, basename)
除非你的原件考虑跨平台。 在linux编程多使用一些系统函数真的很方便,哎没办法越来越懒~~~~~~ 今天记录一下dirname 和basename这两个简单的处理文件路径的linux系统函数。 头文件: #include 函数定义:原创 2013-07-12 11:08:29 · 9793 阅读 · 0 评论 -
__sync_fetch_and_add系列的命令
__sync_fetch_and_add系列的命令,发现这个系列命令讲的最好的一篇文章,英文好的同学可以直接去看原文。Multithreaded simple data type access and atomic variables__sync_fetch_and_add系列一共有十二个函数,有加/减/与/或/异或/等函数的原子性操作函数,__sync_fetch_and_add,顾名思义,转载 2013-06-19 10:29:09 · 748 阅读 · 0 评论 -
Linux系统调用--getrlimit()与setrlimit()函数详解-sysconf/getconf/fpathconf/pathconf
功能描述:获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include int getrlimit(int resource,转载 2013-02-17 10:50:34 · 686 阅读 · 0 评论 -
gdb 使用手册
http://www.programlife.net/gdb-manual.html转载 2013-01-11 12:24:35 · 404 阅读 · 0 评论 -
淘宝内核开发
http://kernel.taobao.org/index.php/Documents/kernel_team_members原创 2013-01-11 12:25:24 · 575 阅读 · 0 评论 -
提高 Linux 上 socket 性能
提高 Linux 上 socket 性能 使用 SocketsAPI,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。本文探索了 4 种使用Sockets API 来榨取转载 2012-12-27 18:08:48 · 574 阅读 · 0 评论 -
GDB详解
1. 列文件清单List( 简写为 l )(gdb) list line_num // 列出当前源文件某行附近的代码(gdb) list file_name:line_num // 列出指定文件某行附近的代码(gdb) list line1,line2 // 列出从line1到line2的代码(gdb) list func_name // 列出函数附近的代码set list转载 2012-10-07 21:10:01 · 583 阅读 · 0 评论 -
epoll_create epoll_ctl epoll_wait close epoll和select的简单比较
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define __FD_转载 2012-04-28 11:45:55 · 556 阅读 · 0 评论 -
用gdb调试子进程
缺省gdb是调试主进程的,可是现在采用daemon模式工作的程序那么多,主进程通常很快就结束了,子进程才是真正干活的。怎么跟踪调试子进程呢?在gdb里面执行:set follow-fork-mode child 则gdb就可以调试子进程了。感谢互联网,感谢google。转载 2014-03-10 16:31:06 · 564 阅读 · 0 评论