![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UNIX
xx77009833
这个作者很懒,什么都没留下…
展开
-
UNIX 编程实践教程学习笔记 (一)
1.反白文字 printf("/033[7m more? /033[m"); *反白的more*/2./ dev/tty . 这是键盘和显示器的设备描述文件. 向这个文件写相当于显示在用户的屏幕上, 读相当于从键盘获取用户的输入. 即使程序的输入/输出被" " > "重定向, 程序还是可以通过这个文件与终端变换量据.3.UNIX的联机帮助氛围很多节,如弟1小节是关于用户命令的帮助,弟2小节是关于系统调用的帮助,弟5小节是关于配置文件的帮助从第一行的内容who(1),可以知道这是who命令,它的小节编号是1原创 2010-07-12 14:43:00 · 407 阅读 · 0 评论 -
Linux fork()返回值说明
<br />子进程fork返回0。理由:随时可以调用getpid()知道自己的pid是多少,所以没必要fork返回pid。<br /><br />对于主进程 fork()返回新建的子进程ID, 子进程fork()返回0<br />http://blog.chinaunix.net/u1/53053/showart_425189.html<br />进程配置有唯一的进程控制块PCB,由proc结构和usr结构组成。<br />下面依次介绍进程相关的系统调用:<br />1:fork()函数转载 2010-07-30 14:37:00 · 904 阅读 · 1 评论 -
关于fork()返回值
fork简介: fork英文原意是“分岔,分支”的意思,而在操作系统中,乃是著名的Unix(或类Unix,如Linux,Minix)中用于创建子进程的系统调用。 【NOTE1】 fork () 的作用是什么?换句话说,你用 fork () 的目的是什么? ――是为了产生一个新的进程,地球人都知道 :)产生一个什么样的进程? ――和你本来调用 fork () 的那个进程基本一样的进程,其实就是你原来进程的副本; 真的完全一样吗? ――当然不能完全一样,你要两转载 2010-07-30 14:42:00 · 109 阅读 · 0 评论 -
关于SIGPIPE导致的程序退出
<br /><br />收集一些网上的资料,以便参考:<br /><br />http://blog.chinaunix.net/u2/69143/showart_1087349.html<br /><br /> 当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。<br /> 根据信号的默认处理规则SIGPIPE信号的转载 2010-08-02 10:48:00 · 347 阅读 · 0 评论 -
WIFEXITED/WEXITSTATUS/WIFSIGNALED
<br /><br />http://hi.baidu.com/adane/blog/item/154c0cd7ca893ed8a044df40.html<br />WIFEXITED/WEXITSTATUS/WIFSIGNALED<br />2008-06-13 15:07<br />If the exit status value (*note Program Termination::) of the child<br />process is zero, then the status value转载 2010-08-02 13:35:00 · 1327 阅读 · 0 评论 -
chroot用法详解 - [linux]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://wtxawr.blogbus.com/logs/17714526.htmlCHROOT就是Change Root,也就是改变程式执行时所参考的根目录位置。 一般的目录架构: / /bin /sbin /usr/bin /home CHROOT的目录架构: /hell/ /hell/bin /hell/usr/bin /hell/home * 为何要CHROOT? 1.限制被CHROOT的使用者所能执行的程式,如转载 2010-08-04 12:56:00 · 609 阅读 · 0 评论 -
网络编程中体会Wait与Waitpid的区别
<br />http://www.cppblog.com/BlueSky/archive/2007/09/04/31527.html转载 2010-08-02 12:47:00 · 136 阅读 · 0 评论 -
Linux线程同步
<br />1. 概要<br /> 线程的同步,发生在多个线程共享相同内存的时候,这时,要保证每个线程在每个时刻看到的共享数据是一致的。如果每个线程使用的变量都是其他线程不会使用的(read & write),或者变量是只读的,就不存在一致性问题。但是,如果两个或两个以上的线程可以read / write一个变量时,就需要对线程进行同步,以确保它们在访问该变量时,不会得到无效的值,同时也可以唯一地修改该变量并使它生效。<br /> 以上就是我们所说的线程同步。<br /> 线程同步有三种转载 2010-08-03 14:18:00 · 351 阅读 · 0 评论 -
Unix文件压缩、解压缩,打包、解包
<br />对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕ic转载 2010-08-03 09:58:00 · 282 阅读 · 0 评论 -
设计log函数库的几个要点
<br />转载时请注明出处和作者联系方式<br />文章出处:http://www.limodev.cn/blog<br />作者联系方式:李先静 <xianjimli@gmail.com><br /> <br />只要留意一下大项目的源码,你会发现,几乎无一例外的包括一个log模块。它的功能很直观:记录一些程序运行时信息,多数情况是用来辅助debug的。大项目都有一套的log的函数,在它的基础上开发,调用它提供的Log函数就行了,比如linux内核、apache等。也有开源log函数库,可以直接拿过用。转载 2010-08-13 12:41:00 · 332 阅读 · 0 评论 -
learning bash shell 学习笔记(一)
1.通配符也可以用于目录 For example, if you wanted to list all of the files in the directories /usr and /usr2, you could type ls /usr*. If you were only interested in the files beginning with the letters b and e in these directories, you could type ls /usr*/[be]* to原创 2010-06-23 16:05:00 · 281 阅读 · 0 评论 -
Unix 命令学习笔记
find当文件名使用通配符时,就要用引号括起文件名。 find / -name "*.xml" -print有-exec 选项 find . -name first.c -mtime +90 -exec rm {}/ ;原创 2010-06-24 09:52:00 · 308 阅读 · 0 评论 -
Linux下的内存泄露检测工具
<br /><br />Linux下的内存泄露检测工具 <br /> 01) MallocDebug <br /> 02) Valgrind <br /> 03) Kcachegrind <br /> 04) ElectricFence. <br /> 05) dmalloc <br /> 06) ccmalloc <br /> 07) LeakTracer <br /> 08) memprof <br /> 09)转载 2010-08-24 20:17:00 · 390 阅读 · 0 评论 -
使用gethostbyname_r得到dns信息
<br />在网络开发中 经常出现需要从主机名得到ip地址的情况 这时就使用gethostbyname<br />但是因为gethostbyname返回的是一个指向静态变量的指针 不可重入 <br />很可能刚要读时值就被其它线程修改<br /><br />所以 新的posix中增加了另一个可重入的从主机名(域名)得到DNS的孙数<br />gethostbyname_r<br /><br />下面是它用法的简单例子<br /><br />CODE<br />#include <netdb.h><br />转载 2010-09-30 16:42:00 · 2162 阅读 · 0 评论 -
rm删除带特殊字符文件名
对于含有“-”的文件名, <br />可用rm加“–”参数方法,如“—”:<br />rm — —<br /> <br />对于含有其它特殊字符的文件名,如<>!*等,可用<br />“/”转义符或“”双引号引起控制<br />如名为“>”或“*”<br />rm /><br />rm “*”转载 2010-11-10 14:52:00 · 286 阅读 · 0 评论 -
守护进程之重读配置文件
<br /><br /> 1. 介绍<br /> 如果守护进程有一配置文件,那么当该守护进程启动时,它读该文件,但是一旦启动后守护进程一般不会再去查看它。当系统管理员更改了配置文件,我们需要通知守护进程守护进程重读该文件。因为守护进程不与终端相结合,或者是无控制终端的会话首进程,或者是孤儿进程组的成员,所以守护进程并不期望接受SIGHUP信号。所以,我们可以利用SIGHUP信号实现配置文件重读。<br />2. 源程序<br /> view plaincopy to clipboardprint?#转载 2011-01-24 10:50:00 · 679 阅读 · 0 评论 -
编写Linux系统下Daemon程序的方法步骤
<br />以下是编写Linux系统下Daemon程序的方法步骤的正文内容,本文是网友投稿或本站会员创作,不代表本站观点: <br />一、引言 Daemon程序是一直运行的服务端程序,又称为守护进程。 <br />本文介绍了在Linux下编写Daemon程序的步骤,并给出了例子程序。 <br />二、Daemon程序简介 Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程转载 2010-07-30 14:28:00 · 171 阅读 · 0 评论 -
syslog(),closelog()与openlog()--日志操作函数
为了满足某些目的,进行日志记录是很有必要的。在典型的 LINUX 安装中,/var/log/messages 包含所有的系统消息,/var/log/mail 包含来自邮件系统的其它日志消息,/var/log/debug 可能包含调试消息。根据你的LINUX的版本,你可以在 /etc/syslog.conf 或者 /etc/syslog-ng/syslog-ng.conf 文件里检查你的系统(消息)配置情况。尽管系统消息的格式和存储位置可能不同,但产生消息的方法却是标准的。UNIX 技术规范(specific转载 2010-07-30 13:57:00 · 1949 阅读 · 0 评论 -
SVN常用命令用法说明
<br />/** <br />* 转载请注明作者longdick http://longdick.javaeye.com<br /><br />* <br />*/ <br /> <br />SVN 版本:1.5 及更新版本<br />名词说明:<br />WC:Working Copy 你的工作区<br />Versioned:受控的;受版本控制的<br /> <br />SVN 是什么? <br /> <br />SVN 是开源的版本控制系统。 <br />比CVS更多的特性。一个更好的 CV转载 2010-07-12 14:44:00 · 299 阅读 · 1 评论 -
在哪里能找到Linux中常用终端程序的源代码(比如ls, more, echo...)
有两个不错的地方可以找到这些代码:<br />1,busybox:http://www.busybox.net/<br />2,coreutils:http://www.gnu.org/software/coreutils/<br />其中busybox相对简单一些,而coreutils更正宗。<br /><br />最新的coreutils -8.5包含了这些<br />base64.c<br />basename.c<br />c99-to-c89.diff<br />cat.c<br />chcon.原创 2010-07-12 10:49:00 · 1435 阅读 · 0 评论 -
UNIX 编程实践教程学习笔记 (一)[续,关于伸缩型数组成员]
1.空数组char buffer[0](伸缩型数组成员)#include struct ast_var_t { struct ast_var_t *entries; char *value; char name[0];};int main(){ struct ast_var_t test; printf("size is %d/n", sizeof(test));return 0;}执行此程序我们可以看到:size is 8这是个广泛使用的常见技巧,常用来构成缓原创 2010-07-13 11:55:00 · 336 阅读 · 0 评论 -
UNIX 编程实践教程学习笔记 (一)[续2,关于伸缩型数组成员]
关于C99中的伸缩型数组成员(flexible array member)C99具有一个称为伸缩型数组成员的性特性,上周在看IBM developerWorks上一篇介绍C99性特性的文章中有介绍,上面举例子很简单,而且一笔带过,根本不知道是干啥的,跟群里跟人讨论了一下,还不是很清楚,今天算是搞明白了,写出来记录一下。这一特性的作用是:可以声明最后一个成员是一个具有特殊属性的结构,该数组成员有两个特征:一、不独立存在;二、可以编写适当的代码使用这个伸缩型数组成员,就像他确实存在,并且拥有你需要的任何数量的元转载 2010-07-13 12:50:00 · 327 阅读 · 0 评论 -
UNIX 编程实践教程学习笔记 (二)
<br />1.man的节<br />1: User Commands and Utilities 用户级命令<br />2: System Calls 系统调用<br />3: C Library Functions 程序库调用<br />4: File formats 文件格式<br />5: Headers,tables and macros <br />6: Games and demos 游戏和演示<br />7: Device and Network Interfaces <br原创 2010-07-15 10:55:00 · 381 阅读 · 0 评论 -
UNIX 编程实践教程学习笔记 (三)
1.内在提供计时器来计量这3 种类型的时间. 3 类计时器的名字和功能如下。(1 ) ITIMER_REAL这个计时器计量真实时间.如同手表记录时间 . 也就是且不管理序在用户态还是核心态用了多少处理器时间它都记录。 当这个计时器用尽。发送SIGALRM 消息(2) ITIMER_VIRTUAL这个计时器就像美式橄榄球中用的计时方法,只有进程在用户态运行时才计时. 虚拟计时器(virtual timer) 的30s,比实际计时器(real timer)的30s要长. 当虚拟计时器用尽,发送矗SIGVTALR原创 2010-07-15 13:43:00 · 330 阅读 · 0 评论 -
GDB 用法和命令介绍
<br />一、GDB常用命令简介<br />r run 运行.程序还没有运行前使用 <br />c cuntinue 运行到下一断点处 <br />q quit 退出 <br />tab tab 命令补全功能 <br />h help 帮助 <br />s step 跟入函数 <br />n next 执行下一行的代码。如果是函数调用,也当作一行代码,执行到此函数返回 <br />b breakpoint 设置转载 2010-07-16 10:46:00 · 308 阅读 · 0 评论 -
UNIX 编程实践教程学习笔记 (二)
<br />1.man的节<br />1: User Commands and Utilities 用户级命令<br />2: System Calls 系统调用<br />3: C Library Functions 程序库调用<br />4: File formats 文件格式<br />5: Headers,tables and macros <br />6: Games and demos 游戏和演示<br />7: Device and Network Interfaces <br原创 2010-07-14 12:38:00 · 330 阅读 · 0 评论 -
GCC笔记
The History of GCC 1984年,Richard Stallman发起了自由软件运动,GNU (Gnu's Not Unix)项目应运而生,3年后,最初版的GCC横空出世,成为第一款可移植、可优化、支持ANSI C的开源C编译器。GCC最初的全名是GNU C Compiler,之后,随着GCC支持的语言越来越多,它的名称变成了GNU Compiler Collection。这里介绍的gcc是GCC的前端,C编译器.警告信息 -Wall : 显示所有常用的编译警告信息。 -W转载 2010-07-16 10:00:00 · 240 阅读 · 0 评论 -
GDB用法详解
GDB是一个强大的命令行调试工具。虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能。而Windows下的图形软件基本上是各自为营转载 2010-07-16 10:41:00 · 87 阅读 · 0 评论 -
Unix/Linux下的Curses库开发指南——第二章 curses库I/O处理
<br />http://blog.csdn.net/tingya/archive/2009/10/30/4746190.aspx<br />一个系列的文章转载 2010-07-16 12:49:00 · 257 阅读 · 0 评论 -
关于文本文件的格式------回车换行符(CR/LF)
<br />以前也看到EditPlus里面文本文件可以设置PC/UNiX/MAC三种格式,UltraEdit中可以设置DOS格式和Unix格式,一直不知道区别在那里。<br /> 今天在使用boost::tokenizer按'/n'切割字符时,发现从文件中读到的字符串无法进行正常切割。回想起在用EditPlus打开文件时, 会提示文件中包含不合法的回车换行符,是否进行转换云云。看来碰到格式的问题了。当时只好采用别的方法绕了过去。回来查找资料,终于被我找到了。<br /> 原来回车(CR)和换行(转载 2010-07-14 15:44:00 · 686 阅读 · 0 评论 -
Linux下的段错误产生的原因及调试方法
<br />简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.<br /><br />一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段的起始地址以及与此相转载 2010-07-29 13:42:00 · 298 阅读 · 0 评论 -
Linux Signal (3): kill和raise
<br />1. 函数说明:<br />kill和raise是用来发送信号的:<br />kill把信号发送给进程或进程组;(传送给制定的进程)<br />raise把信号发送给(进程)自身.<br />他们的原型如下:<br />#include <signal.h><br />int kill(pid_t pid, int signo);<br />int raise(int signo);<br />成功则返回0, 出错则返回-1<br /> 从原型上可以看出, raise函数是可以通过kill实现的转载 2010-07-29 14:00:00 · 453 阅读 · 0 评论 -
Backtraces
A backtrace is a list of the function calls that are currently active in a thread. The usual way to inspect a backtrace of a program is to use an external debugger such as gdb. However, sometimes it is useful to obtain a backtrace programmatically from wit原创 2010-07-29 14:14:00 · 323 阅读 · 0 评论 -
How to Daemonize in Linux
<br />One of the things I keep running across is Linux daemons that don’t properly daemonize themselves. To properly daemonize, the following steps must be followed. The fork() call is used to create a separate process.The setsid() call is used to detach t转载 2010-07-30 14:29:00 · 309 阅读 · 0 评论 -
字节序和网络字节序( 转载)
<br />intel系列的cpu是小尾(Little Endian),高位的字节放在前面,低位的字节放到后面,如果网络传输等等需要进行字节转换,因为最初是摩托罗拉系列的cpu(主要应用于工控机,arm系列或者power pc系列)先出来混的,他们的cpu是相反的,大尾(Big Endian)的,所以他们的cpu在网络上传输是不需要转换的 http://blog.csdn.net/sipsir/archive/2007/08/07/1730843.aspx 1 字节序由于不同的计算机系统采用不同的字节序存储转载 2011-01-28 10:51:00 · 369 阅读 · 0 评论