Linux技术
文章平均质量分 62
more-think
我未曾见过一个早起、勤奋、谨慎、诚实的人抱怨命运不好;良好的品格,优良的习惯,坚强的意志,是不会被假设所谓的命运击败的。
展开
-
管道和重定向
1重定向1.1 重定向符号> 输出重定向到一个文件或设备 覆盖原来的文件>! 输出重定向到一个文件或设备 强制覆盖原来的文件>> 输出重定向到一个文件或设备 追加原来的文件1.2标准错误重定向符号2> 将一个标准错误输出重定向到一个文件或设备转载 2014-05-22 09:54:22 · 470 阅读 · 0 评论 -
Linux学习路线
写一下最近个人的linux学习路线,学完后再好好参考其他人的:1.《Linux程序设计》- 靠它来入门,然后装一个linux系统,学习shell(bash)和linux C,把基础打牢;2. 《深入理解Linux内核》和《Linux内核设计与实现》:后者我已经粗粗看过一遍,值得细看,前者必须尽快看完;3. 《Linux设备驱动设计》:必买必看,实用性强;4.《Adv转载 2014-11-09 12:09:24 · 664 阅读 · 0 评论 -
Linux stat函数讲解:
Linux stat函数讲解:表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返转载 2014-11-09 19:23:50 · 2260 阅读 · 0 评论 -
linux之getopt 函数
命令行参数解析函数 —— getopt()getopt()函数声明如下:#include int getopt(int argc, char * const argv[], const char *optstring);extern char *optarg;extern int optind, opterr, optopt;该函转载 2014-11-09 22:02:08 · 419 阅读 · 0 评论 -
Linux中link,unlink,close,fclose详解
每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。 当通过shell的touch命令或者在程序中open一个带有O_CREAT的不存在的文件时,文件的链接数为1。 通常open一个已存在的文件不会影响文件的链接数。open的作用只是使调用进程与文件之间建立一种访问关系,即open之后返回fd,调转载 2014-11-11 12:06:20 · 688 阅读 · 0 评论 -
shell脚本遍历文件下全部子文件
#!/bin/bashfunction ergodic(){for file in ` ls $1`do if [ -d $1"/"$file] #如果 file存在且是一个目录则为真 then ergodic $1"/"$file e原创 2014-10-15 14:35:35 · 1049 阅读 · 0 评论 -
Makefile VPATH和vpath的使用
开始接触Makefile已经有好几个月了,最近想好好学习学习但是一个简单的问题就卡壳了很简单的一个问题|-- Makefile|-- include| `-- hello.h`-- src |-- hello.cpp `-- main.cp首先是Makefile 文件和include文件夹还有src文件夹在同一个目录下头文件hel转载 2014-11-03 17:58:12 · 877 阅读 · 0 评论 -
C中的volatile用法
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i;原创 2014-10-22 15:14:51 · 517 阅读 · 0 评论 -
套接字选项setsockopt中参数之SO_REUSEADDR
SO_REUSERADDR这个参数允许重复使用本地地址和端口。这个设置常在服务器中使用例如:某个服务器进程占用了TCP的80端口进行侦听,当再次在此端口侦听的时候,会返回错误,那么设置SO_REUSERADDR可以解决这个问题,允许共用这个端口。某些非正常退出的服务器程序,可能需要占用端口一段时间才能允许其他进程使用,即使这个程序已经死掉了。内核仍然需要一段时间才能释放这个端口。一般这原创 2015-07-28 14:20:43 · 2783 阅读 · 0 评论 -
SIGPIPE信号详解
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确原创 2015-07-28 13:46:09 · 1047 阅读 · 0 评论 -
Linux内存池技术
看到一篇关于内存池技术的介绍文章,受益匪浅,转贴至此。 原贴地址:http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html 6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别。而在编程实践中,不可避免地要大量用到堆上的内存。例如在程序中维护一个链表的数据结构时,每次新增或转载 2015-07-19 21:25:19 · 3709 阅读 · 0 评论 -
GCC参数详解
gcc是gnu compiler collection 的简称,他包含了多种语言的编译器,如C, C++, Objective-C, Objective-C++, Java, Fortran和Ada。但每种编译器的名字不一样,gcc and g++ 分别是 gnu 的 c & c++ 编译器gcc/g++ 在执行编译工作的时候,总共需要 4 步1. 预处理, 生成 .i 的文件 [原创 2015-07-24 19:08:26 · 555 阅读 · 0 评论 -
shell脚本如何获取当前时间
在shell脚本里常常需要获取系统时间来处理某项操作,今天系统的学习了一下如何获取系统时间。记录如下:linux的系统时间在shell里是可以直接调用系统变量的如: 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d)命令输出结果如下:[root@centi-C sh]# date +%Y%m%d 20120727 [root@c原创 2015-09-16 13:12:08 · 71905 阅读 · 0 评论 -
几种典型的段错误
1,int main(void){[1] char*s ="hello world";*s ='H';}被装载时,系统把“hello world” 连同其它的字符串和const型数据放入到内存的只读区。执行时,一个变量s被设为指向该字符串的位置,当再试图向该位置写时,就会产生段错误。2,int*ptr = NULL;*ptr =1;因原创 2014-09-03 16:36:49 · 843 阅读 · 0 评论 -
Linux下开发程序记录日志功能
许多应用程序需要记录它们的活动。系统程序经常需要向控制台或日志文件写消息。这些消息可能指示错误、警告或是与系统状态有关的一般信息。例如,su程序会把某个用户尝试得到超级用户权限但失败的事实记录下来。通常这些日志信息被记录在系统文件中,而这些系统文件又被保存在专用于此目的的目录中。它可能是/usr/adm或/var/log目录。对一个典型的Linux安装来说,文件 /var/log/messag转载 2014-08-29 15:48:00 · 5064 阅读 · 0 评论 -
syntax error: unexpected word (expecting ")")错误解决办法
问题:自己写了一个测试的hello程序。编译后原创 2014-08-25 12:04:42 · 33339 阅读 · 0 评论 -
帮你理解Linux环境变量
1、引言 在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command notfound”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本文基于RedHat 9.0,详细讲解了环境变量定制的问题。2、变量简介Linux是一转载 2014-05-22 15:46:57 · 672 阅读 · 1 评论 -
shell中$0,$?,$!等的特殊用法
变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2"转载 2014-05-23 15:35:46 · 510 阅读 · 0 评论 -
Linux下C基础编程---Linux的登录、运行程序、注销
我们在使用Linux这个操作系统的时候基本的过程:登录到系统、然后运行某一个程序、最后注销掉($exit)。那么这几个步骤是怎么工作的。细说起来很复杂,等到后面会有,现在简单说说呗。1、首先来看登录过程。在Linux这个多用户系统中,坑同时几百个用户同时登录,那么系统是怎么对这些用户管理的呢?在登录过程中,当我们输入用户名和密码后,系统会启动一个叫Shell的进程。每个用户都有一个独一无二原创 2014-07-22 22:07:37 · 777 阅读 · 0 评论 -
Linux下C基础编程----系统模型
我们已经知道Linux系统是一个多任务多用户的操作系统原创 2014-07-22 21:34:26 · 835 阅读 · 0 评论 -
Linux下C基础编程----写在Blog之前的话
Linux那点事开播啦原创 2014-07-22 15:30:43 · 905 阅读 · 0 评论 -
fork()详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来转载 2014-05-31 10:48:17 · 716 阅读 · 0 评论 -
DIR和dirent结构体区别
首先说说DIR这一结构体,以下为DIR结构体的定义:struct __dirstream { void *__fd; char *__data; int __entry_data; char *__ptr; int __entry_ptr;原创 2014-06-18 17:07:33 · 3040 阅读 · 2 评论 -
Ubutu下面安装交叉编译器
1、下载arm-linux-gcc-3.4.1.tar.bz2原创 2014-08-03 14:28:00 · 641 阅读 · 0 评论 -
linux下拷贝整个目录
该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大。语法:cp [选项] 源文件或目录 目标文件或目录说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。各选项含义:- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。- d 拷贝时保留链接。-转载 2014-08-06 14:54:43 · 1411 阅读 · 1 评论 -
./configure参数详解
'configure'脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上'--help'选项执行'configure'脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的.下面对每一个选项进行简略的介绍:--cache-file=FILE 'config转载 2014-08-07 12:03:42 · 867 阅读 · 0 评论 -
交叉编译ARM版 Qt
交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.7.3) .分类: QT2011-12-29 10:03 261人阅读 评论(0) 收藏 举报 因实际项目需求,需将Qt编译成LINUX-ARM版,以下为整个操作过程,使用Qt编写的程序已在实际开发板上运行,在此贴出,但愿能为需要的朋友提供上帮助。 准备工作:Lin转载 2014-08-06 23:11:17 · 1396 阅读 · 0 评论 -
嵌入式Linux软件开发
自学嵌入式已经有一年的时间了,从刚开始的迷茫无助到现在的逐渐明朗,中间经历的太多太多了。俗话说万事开头难,刚开始的时候,根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向。又是arm,又是linux,又是uboot头都大了。不知道自己究竟从哪里开始。当看过几本介绍嵌入式的基础教材过后,才逐渐有了一点方向,虽说刚开始看书的时候朦朦胧胧的。但是当几本书看过之后,对嵌入转载 2014-08-09 21:03:35 · 1758 阅读 · 0 评论 -
Linux 内核的编译步骤及模块动态加载
以LDD3上的hello.c为例://hello.c#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, world\n"); return 0;}static void hello_ex转载 2015-12-09 22:35:04 · 1065 阅读 · 0 评论