Linux
文章平均质量分 90
ljx0305
这个作者很懒,什么都没留下…
展开
-
替换^M字符
替换^M字符替换^M字符在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”。有几种方法可以处理。1.使用dos2unix命令。一般的分发版本中都带有这个小工具(如果没有可以根据下面的连接去下载),使用起来很方便:$ dos2unix myfile.txt上面的命令会去掉行尾的^M。 2.使用vi的替换功能。启动vi,转载 2013-12-19 15:27:42 · 3492 阅读 · 0 评论 -
configure交叉编译
交叉编译某个应用程序时,通常需要 ./configure 来生成对应的 Makefile./configure 最关键的三个选项是:--host=HOST指定软件运行的系统平台.如果没有指定,将会运行`config.guess'来检测.--build=BUILD指定软件包安装的系统平台.如果没有指定,默认值将是'--host'选项的值.--target=GARG翻译 2012-11-20 14:38:22 · 2441 阅读 · 0 评论 -
fork两次如何避免僵尸进程
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD 信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill-9也 不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init转载 2012-11-08 13:49:21 · 852 阅读 · 0 评论 -
守护进程的编写
1、概念:是运行在后台,并确一直在运行的特殊进程,独立于控制终端并确周期性的执行某种任务或等待处理某些发生的事件。2、特点:(1)运行在后台。 (2)必须与其运行前的环境(为关闭的文件描述符、控制终端、会话、进程组、工作目录、文件创建掩码等)隔离开来。 (3)启动时从启动脚本/etc/rc.d或作业规划进程crond或用户终端(shell)启动执行。3、转载 2012-11-08 12:21:39 · 766 阅读 · 0 评论 -
linux C 正则表达式
最近有这么个需求,c搞搞正则,毕竟Regular Expression so强大^_^标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。编译正则表达式为了提高效率,在将一个字符串与正则转载 2012-11-08 11:49:41 · 1234 阅读 · 0 评论 -
proc文件系统探索 之 以数字命令的目录
以数字命名的目录表示当前一个运行的进程,目录名即为进程的pid。怒录内的目录和文件给出了一些关于该进程的一些信息。niutao@niutao-desktop:/proc/6584$ lsattr coredump_filter fd maps oom_score statmauxv cpuset转载 2012-11-07 17:21:09 · 2542 阅读 · 0 评论 -
shell 里 awk print 的用法
shell 里 awk print 的用法首先, 你需要先了解awk 的工作原理:1。AWK读取输入文件一次一行。 2。对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。 3。如果没有模式匹配,将执行任何行动。 4。在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。 5。如果没有给出搜索模式,然后awk要执行每一行输入给定的行动。 6。如果没有给出动作,打印,这是默认的操作转载 2012-11-07 15:57:00 · 1165 阅读 · 0 评论 -
Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加下面的内容:(注意:等号前面不要加空格,否则可能出现 command not found)#在PATH中找到可执行文件程序的路径。export PATH =$PATH转载 2012-11-07 16:50:24 · 786 阅读 · 0 评论 -
shell大小中括号作用
Shell的强大是毋庸置疑的,方便了我们也迷惑了我们,比如这些杂七杂八的括号,一向自认聪明的我也傻傻分不清了,今天好哈的整理一下。 在Shell中的小括号,大括号结构和有括号的变量,命令的用法如下:1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string}转载 2012-11-07 16:22:47 · 720 阅读 · 0 评论 -
errno多线程安全
一、errno的由来 在C编程中,errno是个不可缺少的变量,特别是在网络编程中。如果你没有用过errno,那只能说明你的程序不够健壮。当然,如果你是WIN32平台的GetLastError(),效果也是一样的。 为什么会使用errno呢?个人认为,这是系统库设计中的一个无奈之举,他更多的是个技巧,而不是架构上的需要。我们观察下函数结构,可以发现,函数的参数返回值只有一个转载 2012-12-28 17:49:46 · 905 阅读 · 0 评论 -
errno与多线程
http://docs.sun.com/app/docs/doc/819-7051?l=zh《多线程编程指南》一、摘自《APUE》POSIX和ISO C将errno定义为这样一个符号,它扩展成为一个可修改的整型左值(lvalue)。这可以是包含出错编号的一个整数,或者是一个返回出错编号指针的函数。以前使用的定义是: 但是在支持线程的环境中,多个线程共享进程地址空间,每个线程都有属于转载 2012-12-28 17:52:25 · 4838 阅读 · 0 评论 -
Posix线程编程指南(2)
概念及作用在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问,比如程序可能需要每个线程维护一个链表,而使用相同的函数操作,最简单的办法就是使用同名而不同变量地址的线程相关数据结构。这样的数据结构可以由Posix线程库转载 2012-12-28 17:54:38 · 568 阅读 · 0 评论 -
关于SIGPIPE导致的程序退出
关于SIGPIPE导致的程序退出收集一些网上的资料,以便参考:http://blog.chinaunix.net/u2/69143/showart_1087349.html 当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连转载 2013-07-03 15:11:02 · 3207 阅读 · 1 评论 -
Linux 的多线程编程的高效开发经验
背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。我们假转载 2013-07-03 15:18:07 · 3745 阅读 · 1 评论 -
CGI 文件下载
文件名:download.c 用交叉编译工具编译生成download#include#include#include#include#include#define MAX_FILE_LEN (1024*30)#define DOWNLOAD_FILE_PATH"/works/config/"#define DOWNLOAD_FILE_NAME"转载 2013-07-17 17:38:49 · 9232 阅读 · 0 评论 -
linux下C程序获取绝对路径各种方法分析
昨天肚腩群里有人问LINUX下C如何获取程序绝对路径。初看这问题,肚腩觉得很简单啊,就用getcwd或者argv[0]就可以了。写了个程序试试,#include int main(int argc,char *argv[]){ char buffer[100]; getcwd(buffer, sizeof(buffer)); printf("The c转载 2013-06-22 21:10:52 · 28881 阅读 · 4 评论 -
关于GBK和UTF-8之间的转换
关于GBK和UTF-8之间的转换,很多初学者会很迷茫。一般来说GBK和UTF-8是文字的编码方式,其对应的内码是不一样的,所以GBK和UTF-8的转换需要对内码进行一一映射,然后进行转换。对于一般系统上的工程,一般使用libiconv即可,但是对于嵌入式或手机操作系统,libiconv显得就有点庞大了。在这里提供GBK和UTF8转换以及全半角、大小写转换等函数,希望对手机开发的转载 2013-05-09 14:21:30 · 3729 阅读 · 0 评论 -
C/C++常用时间函数介绍
在介绍之前,先介绍两个概念 Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。 Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时转载 2013-05-09 10:49:25 · 3573 阅读 · 0 评论 -
./configure配置的参数 交叉编译 host,build target的含义
交叉编译 host,build target的含义:build就是你正在使用的机器,host就是你编译好的程序可以运行的平台,target就是你编译的程序可以处理的平台.这个 build和host比较好理解,但是target就不好办了,到底什么意思呢?一般来说,我们平时所说的交差编译用不到他target的,比如. /configure --build=i386-linux,--转载 2013-03-01 14:20:16 · 4977 阅读 · 0 评论 -
不同平台字节序影响位字段封包
How Endianness Effects Bitfield PackingHints for porting drivers.Big endian machines pack bitfields from most significant byte to least.Little endian machines pack bitfields from least significa转载 2013-01-07 09:24:53 · 840 阅读 · 0 评论 -
shell中一些特殊符号的含义简介
在shell中常用的特殊符号罗列如下:# ; ;; . , / / 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `comman转载 2012-11-07 16:28:18 · 6351 阅读 · 0 评论 -
从Windows 移植到 UNIX 环境
从Windows 移植到 UNIX 环境大多数基于 Microsoft® Windows® 的项目都是使用 Microsoft Visual Studio® 构建的,这是一种复杂的集成开发环境 (IDE),它可以为开发人员实现几乎整个构建过程的自动化。此外,Windows 开发人员使用了 Windows 平台特定的应用程序程序接口 (API)、头文件和语言扩展。大多数类 UNIX® 系统,如转载 2012-10-26 22:58:40 · 645 阅读 · 0 评论 -
epoll学习笔记
epoll学习笔记 epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知.以代码来说明问题:首先给出server的代码,需要说明的是每次accept的连接,加入转载 2012-10-21 15:57:55 · 750 阅读 · 0 评论 -
条件变量、pthread_cond_init
1.初始化条件变量pthread_cond_init#include int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错转载 2011-08-16 09:11:10 · 1755 阅读 · 0 评论 -
使用异步 I/O 大大提高应用程序的性能
使用异步 I/O 大大提高应用程序的性能学习何时以及如何使用 POSIX AIO API级别: 中级M. Tim Jones (mtj@mtjones.com), 顾问工程师, Emulex2006 年 9 月 28 日Linux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,转载 2010-05-17 17:37:00 · 759 阅读 · 0 评论 -
Linux下解压压缩及打包命令大全
———————————————.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf FileNa转载 2010-04-02 16:00:00 · 611 阅读 · 0 评论 -
GDB用法详解
GDB用法详解GDB是一个强大的命令行调试工具。虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的转载 2010-04-15 10:06:00 · 1042 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
Linux 的多线程编程的高效开发经验 打印本页 将此页作为电子邮件发送级别: 中级杨 奕 (yangyish@cn.ibm.com), 软件工程师, IB转载 2010-04-02 14:52:00 · 826 阅读 · 0 评论 -
TCP的socket连接示例
用C实现的TCP socket连接/读/写操作。采用fcntl设置非阻塞式连接以实现connect超时处理;采用select方法来设置socket读写超时。此示例可被编译运行于Windows/unix系统。源文件connector.c原来的代码在windows下编译不通过,今天qzj问起才发现。因为加了异步的处理,没有对这部分代码进行兼容性处理。本着做学问一丝不苟嘀精神,重新修改了一下转载 2010-02-05 15:26:00 · 729 阅读 · 0 评论 -
accept函数
accept函数SOCKET accept( SOCKET s, struct sockaddr FAR *addr, int FAR *addrlen ); 服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接转载 2010-02-04 22:42:00 · 1212 阅读 · 0 评论 -
获取SISC和IDE硬盘序列号 Linux完整源码
获取SISC硬盘的序列号linux完整源码#include #include #include #include #include #include #include #define SCSI_TIMEOUT 5000 static char转载 2011-09-20 09:24:29 · 2313 阅读 · 0 评论 -
获得Linux系统中的IP、MAC地址等信息 .
实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地址是多少,每块网卡分配了几个IP(一个网卡对应多个IP)等等。这些信息往往需要通过ifconfig指令来获得,对于程序员来说,在代码中调用外部的shell指令可不是个最佳方案,因为没人能保障转载 2012-03-31 10:44:20 · 917 阅读 · 0 评论 -
Ubuntu下,分别用ibus和scim安装极点五笔
刚刚安装好了 Ubuntu 11.04,但是没有五笔的日子实在不好过,WINDOWS下用习惯了极点五笔,本以为极点的作者不出Linux版的,结果在网上一搜,居然有高手想到引用极点五笔的字典实现可以同时打拼音和五笔,废话少说,下面看如何操作:1. ibus下安装极点五笔在终端中执行如下操作sudo wget http://www.unicom-china.com/download转载 2012-07-25 15:44:43 · 1413 阅读 · 0 评论 -
QThread中的互斥、读写锁、信号量、条件变量
在gemfield的《从pthread到QThread》一文中我们了解了线程的基本使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是线程的同步问题。关于这个问题,gemfield在《从进 程到线程》中有一个比喻,有必要重新放在下面温习下:*******************************最后用一个比喻来总结下:1、一个进程就好比一个房子里有一个人;2、clone创建线程就相当转载 2012-10-15 15:05:26 · 3858 阅读 · 0 评论 -
一个fork的面试题
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?1234567891011121314#include #include转载 2012-10-04 11:58:14 · 807 阅读 · 0 评论 -
linux系统启动流程
系统的启动时指从计算机加电到显示用户登陆提示的整个过程,我们在这里对整个流程坐一个讨论...对系统的流程先有一个大概的了解:开电源==>BIOS自检==>启动设备(磁盘orU盘or光驱)==>引导程序(lilo或grub)==>内核==> init程序(rc.sysinit和rc)==>mingetty==>终端登录==>shell...现在分为四个阶段来讲述:第一阶段:BIO转载 2012-10-04 11:30:33 · 610 阅读 · 0 评论 -
linux下补丁的创建及使用原理
linux下补丁的创建及使用原理首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用到几个选项。所以必须学会这几个选项。1、diff--------------------NAME diff - find differences between two files转载 2012-10-04 10:45:35 · 772 阅读 · 0 评论 -
使用top查看进程和系统负载信息
引言 使用top命令,可以查看正在运行的进程和系统负载信息,包括cpu负载、内存使用、各个进程所占系统资源等,top可以以一定频率更新这些统计信息。下面我们来学习top命令的具体使用方法。 默认输出top命令的默认输出如下:top - 08:27:48 up 21:43, 2 users, load a转载 2012-09-28 17:02:31 · 6861 阅读 · 0 评论 -
如何使用strace+pstack利器分析程序性能
如何使用strace+pstack利器分析程序性能引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程转载 2012-09-28 16:05:52 · 1221 阅读 · 0 评论 -
自助Linux之问题诊断工具strace
引言“Oops,系统挂死了..."“Oops,程序崩溃了..."“Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演。理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因。但现实情况,许多错误日志打印模凌两可,更多地描述了出错时的现象(比如"could not open file","conne转载 2012-09-28 16:05:26 · 871 阅读 · 0 评论