
linux编程
bytxl
归零。
得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。
不怕死,不找死。
展开
-
日历时间 时钟时间 用户CPU时间 系统CPU时间
日历时间:系统基本数据类型time_t 时钟时间(墙上时钟时间wall clocktime):就是一个进程从开始运行到结束运行后,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间。 用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。 系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。 进程的三种状转载 2012-05-28 12:37:45 · 992 阅读 · 0 评论 -
Richard Stevens的几本书
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://stevens0102.blogbus.com/logs/37223648.html博客名取为“纪念Richard Stevens”,居然没有写几篇与Stevens有关的文章,真不应该。现在想为什么取这么个博克名,Jim Gray、Butler Lampson、Neil Gunther、Adrian转载 2012-05-23 17:09:53 · 1168 阅读 · 0 评论 -
FILE *stdout 和 STDOUT_FILENO 的区别
首先要知道 FILE *stin 和 STDIN_FILENO 的区别。stdin类型为 FILE*STDIN_FILENO类型为 int使用stdin的函数主要有:fread、fwrite、fclose等,基本上都以f开头使用STDIN_FILENO的函数有:read、write、close等操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是转载 2012-06-16 09:37:18 · 3861 阅读 · 0 评论 -
linux stat函数讲解
原文地址:http://www.cnblogs.com/hnrainll/archive/2011/05/11/2043361.html表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获转载 2012-07-11 11:22:39 · 809 阅读 · 0 评论 -
手把手教你把Vim改装成一个IDE编程环境(图文)
原文地址:http://blog.youkuaiyun.com/wooin/archive/2007/10/31/1858917.aspxBy:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.youkuaiyun.com/wooin转载 2012-07-17 14:47:11 · 2013 阅读 · 0 评论 -
学习linux内核的经典书籍介绍
有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作(个人概括为“2+1+2”,第一个2是指2本全面讲解内核的书,中间的1指1本讲解驱动开发的书,后面的2则指2本有关内核具体子系统的书,你是否想到了某某广告里三个人突然站起单臂齐举高呼“1比1比1”的场景?)。《Linux内核设计与实现》 简称LKD,从入门开始,介绍了诸如进程管理、系统转载 2012-06-15 16:05:00 · 804 阅读 · 0 评论 -
semop
函数:int semop(int id , struct sembuf array[], nops); 信号量 优点:比文件锁有优势,效率不是高那么一点,起码不用打开文件关闭文件这些耗时间的工作。 缺点:一旦锁定,若在解锁之前出现程序崩溃等segment fault问题,将直接导致锁定的信号量无法恢复,形成永久占用。文件锁则没有这个问题,进程的退出将导致文件描转载 2012-07-26 10:45:23 · 1213 阅读 · 0 评论 -
掌握 Linux 调试技术
http://www.ibm.com/developerworks/cn/linux/sdk/l-debug/index.html#ibm-pcon在 Linux 上找出并解决程序错误的主要方法Steve Best (sbest@us.ibm.com)JFS 核心小组成员,IBM简介: 您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加转载 2012-07-27 17:09:02 · 1154 阅读 · 0 评论 -
3个字节的空txt文本文件——utf8
http://blog.youkuaiyun.com/jinjazz/article/details/2532845运行下面代码可以建立一个3个字节的空txt文本文件,想了解其原因的请参考文本文件的编码方式和unicode的具体资料,google上就有很多。[csharp] view plaincopySystem.IO.FileStream fs = new System转载 2012-08-13 17:49:07 · 2451 阅读 · 0 评论 -
linux c程序中获取shell脚本输出
http://www.linuxeden.com/html/develop/20100416/102577.html?13437162161. 前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能转载 2012-07-31 14:29:02 · 1660 阅读 · 0 评论 -
检验IP地址有效性
使用inet_aton函数原创 2012-09-04 15:45:46 · 722 阅读 · 0 评论 -
linux判断文件是否存在
http://blog.youkuaiyun.com/zjl_1026_2001/article/details/6587320对于判断文件是否存在,每个人有不同的方法!我通常采用两种方法 : open 和 access ;这个俩个方法有相似之处,且有不同之处;下面为大家详细说明他们的不同之处:open 是打开,读写等操作文件的一个函数,access就是一个判断文件权限的函数。在linux转载 2012-09-08 11:11:59 · 1004 阅读 · 0 评论 -
AF_UNIX 地址系列
http://www.cppblog.com/tx7do/articles/5949.htmlAF_UNIX 地址系列(使用 AF_UNIX 或 AF_UNIX_CCSID 地址系列的套接字)可以是面向连接的(类型 SOCK_STREAM),也可以是无连接的(类型 SOCK_DGRAM)。两种类型都很可靠,原因是没有连接两个进程的外部通信函数。UNIX 域数据报套接字的运行方式与转载 2012-09-11 08:02:44 · 1344 阅读 · 0 评论 -
提领类型双关的指针将破坏重叠规则——strict-aliasing
转载请保留本行原始出处声明信息 :http://www.zeali.net/entry/454MaDe1nZEALwarning: dereferencing type-punned pointer will break strict-aliasing rules 在 gcc 2.x 下编译没有任何 warning 信息的代码换到 gcc 3.x 版本下之后出现了类似的 warn转载 2012-10-19 19:29:39 · 4906 阅读 · 0 评论 -
gdb调试正在运行的进程
http://elisawell.blog.163.com/blog/static/171462881201223061149953/有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身 上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对转载 2012-10-30 14:38:08 · 916 阅读 · 0 评论 -
GDB调试子进程
http://blog.sina.com.cn/s/blog_4e415c0b0100lum0.html1.set follow-fork-mode 这条命令可以用于在调试父进程或是子进程的模式之间进行切换。例如在fork函数执行之前执行setfollow-fork-mode child,当fork执行后,设定在子进程上的断点将会有效,而父进程上的断点此时无效;反之依然。缺省gdb是调转载 2012-10-30 16:20:41 · 710 阅读 · 0 评论 -
GNU GDB Debugger
引言一个调试器(精确地称为symbolic debugger),是一个运行你的程序的应用。它可以单步调试源码、一行一行地执行你想要执行的每一行代码。你甚至可以单步调试你的机器指令。在任何时候,你可以在运行时检查甚至修改任何变量的值。如果你的程序崩溃,一个符号调试器会告诉你程序在哪以及为什么崩溃。你可以执行程序并看到哪些源码行以哪种顺序被执行。调试器也可以解决无限循环的问题。使用它可以单原创 2012-11-06 13:32:04 · 1442 阅读 · 0 评论 -
学习GDB
http://blog.youkuaiyun.com/blueboy82006/article/details/5586109学习使用 GNU GDB Debugger 作者:王聪GDB 常用命令参考手册GDB 命令行参数GDB 命令GDB 操作提示GDB 相关手册相关链接转载 2012-11-07 09:42:05 · 592 阅读 · 0 评论 -
使用truss、strace或ltrace诊断软件的"疑难杂症"
作者:李凯斌 2005-01-18 11:03:24 来自:IBM DW中国 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss 和strace用来跟踪一个进程的系统调用或信号产生的转载 2012-10-30 16:39:27 · 643 阅读 · 0 评论 -
exec函数族
原文出自(IBM):http://www-128.ibm.com/developerworks/cn/linux/kernel/syscall/part3/index.htmlhttp://blog.chinaunix.net/uid-25906157-id-3154375.html疑惑:既然所有新进程都是由fork产生的,而且由fork产生的子进程和父进程几乎完全一样,那岂不是意味着转载 2012-11-08 08:57:18 · 555 阅读 · 0 评论 -
gdbserver远程调试
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yehubilee.blog.51cto.com/1373999/985518远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用GDB标准远程串行协议协同工作,实现对目标机上的系统内核和 上 层应用的监控和调试功能。调试stub是嵌入转载 2012-11-27 08:20:12 · 3577 阅读 · 0 评论 -
ioctl 的使用方法详细说明与例子
Talking To Device Files与设备文件对话 (writes and IOCTLs)设备文件是用来代表相对应的硬件设备。绝大多数的硬件设备是用来进行输出和输入操作的,所以在内核中肯定有内核从进程中获得发送到设备的输出的机制。这是通过打开一个设备文件然后向其中进行写操作来实现的,如同对普通文件的写操作。在下面的的例子中,这是通过 device_write实现的。但这并原创 2012-11-22 08:42:57 · 3826 阅读 · 0 评论 -
ioctl 官方说明
http://blog.chinaunix.net/uid-7235491-id-2061015.htmlNAMEioctl - control a STREAMS device (STREAMS)SYNOPSIS#include stropts.h>int ioctl(int fildes, intrequest, ... /* arg */);转载 2012-11-22 14:25:46 · 1992 阅读 · 0 评论 -
Linux下取得UUID
参考:http://www.bolenot.ru/library/cmd/blcmdl3_uuid_generate_random.htmchar *psz_buf = malloc( 64 ); if ( !psz_buf ) return NULL;uuid_t uu;uuid_generate_random( uu );uuid_unparse原创 2012-12-13 10:34:42 · 5644 阅读 · 0 评论 -
S_ISDIR S_ISREG等常见的几个宏
参考:http://blog.sina.com.cn/s/blog_87a521ac0101088a.htmlS_ISLNK(st_mode):是否是一个连接.S_ISREG是否是一个常规文件.S_ISDIR是否是一个目录S_ISCHR是否是一个字符设备S_ISBLK是否是一个块设备S_ISFIFO是否 是一个FIFO文件S_ISSOCK是否是一个SOCKET文转载 2012-11-23 09:28:59 · 4511 阅读 · 0 评论 -
父进程等待子进程终止 wait, WIFEXITED, WEXITSTATUS
http://blog.youkuaiyun.com/mafuli007/article/details/8264200wait()的函数原型是:#include #include pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出。如果让它找到了这样一个已经变成僵尸的子进程,wait就会收转载 2012-12-22 10:10:46 · 769 阅读 · 0 评论 -
setlocale()用法笔记
http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.htmlC 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法。这篇是我自己的 setlocale() 使用总结。Linux的g转载 2013-01-07 11:39:58 · 1418 阅读 · 0 评论 -
brk(), sbrk() 用法详解
http://blog.youkuaiyun.com/ssjhust123/article/details/7772153brk() , sbrk() 的声明如下:[cpp] view plaincopy#include int brk(void *addr); void *sbrk(intptr_t increment); 这两个函数都用来改变 "pr转载 2013-01-23 08:42:00 · 754 阅读 · 0 评论 -
fcntl的close-on-exec标志
http://blog.163.com/tlost_heaven/blog/static/79246122200910239562451/每个文件描述符都有一个close-on-exec标志。默认情况下,这个标志最后一位被设置为 0。这个标志符的具体作用在于当开辟其他进程调用exec()族函数时,在调用exec函数之前为exec族函数释放对应的文件描述符。我们来看一下具转载 2013-01-26 19:25:33 · 647 阅读 · 0 评论 -
gethostbyname() -- 用域名或主机名获取IP地址
http://hi.baidu.com/zengzhaonong/item/87d9d296d0824cbb82d29570#include #include struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hosten转载 2013-04-02 14:28:33 · 808 阅读 · 0 评论 -
Linux system函数返回值
http://blog.cheyo.net/?p=42例:1status = system("./test.sh");1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值转载 2012-08-15 10:39:15 · 801 阅读 · 0 评论 -
C语言获取和设置环境变量
用C程序来访问和设置环境变量对于C程序 的用户来说,可以使用下列函数来设置或访问一个环境变量。◆ getenv()访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所访问的环境变量不存在,则会返回NULL。◆ setenv()在程序里面设置某个环境变量的函数。◆ unsetenv()清除某个特定的环境变量的函数。◆ putenv() 改变或增加环境变量。原创 2013-04-07 22:47:30 · 9312 阅读 · 0 评论 -
linux下C语言中的flock函数用法
http://blog.youkuaiyun.com/lin_fs/article/details/7804494表头文件 #include 定义函数 int flock(int fd,int operation); 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。转载 2013-03-19 09:39:02 · 902 阅读 · 0 评论 -
uuid_generate
http://blog.chinaunix.net/uid-12567959-id-161022.htmlNameuuid_generate, uuid_generate_random, uuid_generate_time - create a newunique UUID valueSynopsis#include uuid/uuid.h>void uuid_g转载 2013-04-10 16:52:13 · 5552 阅读 · 0 评论 -
openlog、syslog和closelog函数
http://blog.chinaunix.net/uid-26583794-id-3166083.html守护进程日志的实现syslogd守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是openlog、syslog和closelog函数。表8.4所示为这3个函数的具体信息。转载 2012-12-11 14:07:51 · 992 阅读 · 0 评论 -
linux下遍历目录树方法总结(上)
http://blog.youkuaiyun.com/vinda2012/article/details/6091739前几天需要实现对整个目录树的遍历,查阅了相关的一些资料。开始找到的原始的方法是使用readdir()与lstat()函数实现递归遍历,后来发现linux对于目录遍历这种最常用的操作已经提供了很完善的接口:ftw()与nftw()。下面就这两种方法具体说明一下。1、手动实现递归转载 2013-04-23 15:35:00 · 794 阅读 · 0 评论 -
linux下遍历目录树方法总结(下)
http://blog.youkuaiyun.com/Vinda2012/article/details/60919462、使用ftw调用遍历目录2.1ftw函数族 使用readdir函数等实现递归遍历目录树的方法比较原始,glibc2.1收录了ftw等函数,可以方便实现目录树的遍历。[cpp] view plaincopy#include int ftw转载 2013-04-23 15:36:20 · 1266 阅读 · 0 评论 -
_XOPEN_SOURCE
http://blog.chinaunix.net/uid-23204078-id-2525171.html[误解]#define _XOPEN_SOURCE决不是简单的宏定义它是使程序符合系统环境的不可缺少的部分[概念]Glibc 所实现全部或部分规范下的功能有:1.ISO C: C语言国际标准. 2.POSIX: 操作系统的 ISO/IEC 9945 (转载 2013-04-24 15:48:15 · 3226 阅读 · 0 评论 -
linux glob函数man页与实例
Linux Programmer's ManualNAME glob, globfree - find pathnames matching a pattern, free memory from glob()SYNOPSIS #include int glob(const char *pattern, i原创 2013-04-17 13:40:10 · 2748 阅读 · 0 评论 -
Core Dump调试 /Z
1. 前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.2. gdb:有一种办法是, 我们用gdb的step, 一步一步寻找.这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字,原创 2012-06-27 11:00:55 · 1022 阅读 · 0 评论