Linux的那些事儿
Webols
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux环境进程间通信(二): 信号(上)
转载自http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html 一、信号及信号来源 信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。转载 2012-04-22 01:46:33 · 323 阅读 · 0 评论 -
Linux 下的线程读写锁
Linux 下的线程读写锁 有一种写优先读写锁,有如下特点: 1)多个读者可以同时进行读 2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行) 3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) 在Solaris 中直接提供了读写锁, 但是在Linux 中只提供了线程的读写锁, 这里记录了一些读写锁的资料. 1.Solaris .vs. Lin转载 2012-10-12 11:23:15 · 610 阅读 · 0 评论 -
Linux 套接字编程中的 5 个隐患
Linux 套接字编程中的 5 个隐患 在异构环境中开发可靠的网络应用程序 转载自:http://www.ibm.com/developerworks/cn/linux/l-sockpit/ 在 4.2 BSD UNIX® 操作系统中首次引入,Sockets API 现在是任何操作系统的标准特性。事实上,很难找到一种不支持 Sockets API 的现代语转载 2012-09-13 19:03:57 · 499 阅读 · 0 评论 -
vim命令详解
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的: :qx 开始记录宏,并将结果存入寄存器x q 退出记录模式 @x 播放记录在x寄存器中的宏命令 稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模 式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@转载 2012-07-21 22:56:07 · 538 阅读 · 0 评论 -
vim配置详解
打开控制台,转到vim目录。 $:cd /etc/vim/ vim 目录有个vimrc文件,以root权限打开修改。为了以后还原,最好备份一份。 sudo cp vimrc vimrc.bak 然后打开vimrc,修改你需要的配置,下面配置文件有中文注释。 sudo vim vimrc 修改好保存 "=======================转载 2012-07-17 12:31:24 · 1554 阅读 · 0 评论 -
Linux 多线程应用中如何编写安全的信号处理函数
转载自http://www.ibm.com/developerworks/cn/linux/l-cn-signalsec/ Linux 多线程应用中编写安全的信号处理函数 在开发多线程应用时,开发人员一般都会考虑线程安全,会使用 pthread_mutex 去保护全局变量。如果应用中使用了信号,而且信号的产生不是因为程序运行出错,而是程序逻辑需要,譬如 SIGUSR1、SIGRTMIN转载 2012-04-22 02:23:29 · 565 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
转载自http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/index.html 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线转载 2012-04-22 02:21:27 · 405 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(上)
转载自http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输转载 2012-04-22 02:15:29 · 403 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(下)
转载自http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html 系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。转载 2012-04-22 02:18:12 · 367 阅读 · 0 评论 -
Linux环境进程间通信(四)信号灯
转载自http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/ 一、信号灯概述 信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型: 二值信号灯:最简单的信转载 2012-04-22 02:14:11 · 369 阅读 · 0 评论 -
Linux环境进程间通信(一)管道和FIFO
转载自http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/ 1、 管道概述及相关API应用 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘转载 2012-04-22 01:36:16 · 503 阅读 · 0 评论 -
使用 GDB 调试多进程程序
转载自http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统: 进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子转载 2012-04-22 01:08:43 · 459 阅读 · 0 评论 -
Linux环境进程间通信(三)消息队列
转载自http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/ 消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要转载 2012-04-22 02:11:48 · 366 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(下)
转载自http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html 一、信号生命周期 从信号发送到信号处理函数的执行完毕 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处转载 2012-04-22 02:10:08 · 343 阅读 · 0 评论 -
Linux free命令详解
关于怎么观察内存使用问题,free是很好用的一个命令。 参数讲解 bash-3.00$ freetotal used free shared buffers cachedMem: 1572988 1509260 63728 0 62800 277888-/+ buffers/c转载 2012-04-19 14:39:53 · 501 阅读 · 0 评论 -
Linux查看和结束进程命令详解
在ubuntu中,终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。 ------------------------------------------------------------------- 先看两个例子: 例子一:结束某个程序,如Firefox 键入命令: pkill firefox转载 2012-04-19 14:32:26 · 1892 阅读 · 0 评论 -
使用 lsof 查找打开的文件
转载自http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html 在 UNIX® 环境中,文件无处不在,这便产生了一句格言:“任何事物都是文件”。通过文件不仅仅可以访问常规数据,通常还可以访问网络连接和硬件。在有些情况下,当您使用 ls 请求目录清单时,将出现相应的条目。在其他情况下,如传输控制协议 (TCP) 和用户数据报协议转载 2012-04-19 22:29:13 · 523 阅读 · 0 评论 -
Linux系统调用列表
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用转载 2012-04-19 14:46:10 · 449 阅读 · 0 评论 -
Linux netstat命令详解
简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。 输出信息含义 执行netstat后,其输出结果为 Active Internet connections (w/o servers)Proto Recv-转载 2012-04-19 13:59:18 · 833 阅读 · 0 评论 -
Linux tcpdump命令详解
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例 默认启动 tc转载 2012-04-19 12:28:58 · 658 阅读 · 0 评论 -
《Unix环境高级编程》学习笔记
loopos@webols:~/work/apue$ gcc -o fig11.2 fig11.2.c /tmp/ccXTzASv.o: In function `main': fig11.2.c:(.text+0x2fe): undefined reference to `pthread_create' collect2: ld returned 1 exit status 这个错误跟以原创 2011-07-20 10:51:37 · 676 阅读 · 0 评论 -
netperf 与网络性能测量
转载自http://www.ibm.com/developerworks/cn/linux/l-netperf/ 在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多,或者即使考虑到性能的问题,但是却发现没有合适的手段去测试网络的性能。 当开发出一个网络应用程序后,我们会发现,在实际的网络环境使用中,网络应用程序的使用效果不是很理想,转载 2012-04-30 13:52:59 · 812 阅读 · 0 评论 -
Linux 平台相关代码的 C++ 解决方案
转载自http://www.ibm.com/developerworks/cn/linux/l-cn-cppoverlinux/index.html Linux 平台相关代码带来的问题 目前市场上存在着许多不同的 Linux 平台(例如:RedHat, Ubuntu, Suse 等),各大厂商和社区都在针对自己支持的平台进行优化,为使用者带来诸多方便的同时也对软件研发人员在进行编码时带转载 2012-04-30 14:18:02 · 554 阅读 · 0 评论 -
用GDB调试程序
本文章转自http://blog.youkuaiyun.com/haoel/article/details/2879 感谢原文作者的详细讲解,好文章就要分享给大家。 用GDB调试程序 GDB概述 ———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发转载 2012-03-14 17:26:59 · 384 阅读 · 0 评论 -
man中文手册配置
对于英文比较差的程序员,查看英文版的man还是有点吃力,简单几步配置,让你不再头疼。 (个人觉得还是阅读英文手册好,想作为一名出色的程序员,基本的英语阅读能力是必须的,毕竟很多资源都是英文的) 以下针对Debian分支Linux下的配置: 1、安装man中文包 sudo apt-get install manpages-zh 2、备份man配置文件 sudo cp /etc/m原创 2012-03-29 19:34:28 · 758 阅读 · 0 评论 -
较为通用的makefile
#较为通用的makefile: #应用自动变量 ($@ $^ $ # $@---目标文件 # $^---所有的依赖文件 # $ #命令行必需以[Tab]键开始,以和Makefile其他行区别。 CC = gcc CFLAGS = -Wall -O -g3 INCLUDE = #要包含的头文件目录 -I/usr/include/mysql LFLAGS =原创 2012-03-12 12:26:06 · 440 阅读 · 0 评论
分享