linux编程
文章平均质量分 79
liangkaiming
这个作者很懒,什么都没留下…
展开
-
孤儿进程和僵尸进程
<br />一、定义:什么是孤儿进程和僵尸进程<br />僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。<br />孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。<br />僵尸进程将会导致资源浪费,而孤儿则不会。<br />子进程持续10秒钟的僵尸状态(EXIT_ZOMBIE)<br />--------------转载 2011-03-08 09:59:00 · 12581 阅读 · 2 评论 -
C语言中函数参数的入栈顺序
<br />对技术执着的人,比如说我,往往对一些问题,不仅想做到“知其然”,还想做到“知其所以然”。C语言可谓博大精深,即使我已经有多年的开发经验,可还是有许多问题不知其所以然。某天某地某人问我,C语言中函数参数的入栈顺序如何?从右至左,我随口回答。为什么是从右至左呢?我终究没有给出合理的解释。于是,只好做了个作业,于是有了这篇小博文。<br />#include <stdio.h><br />void foo(int x, int y, int z)<br />{<br /> printf(转载 2011-03-08 10:06:00 · 2431 阅读 · 1 评论 -
通过共享内存进行进程间通信
<br />共享内存的工作方式<br />顾名思义,共享内存让一段内存可供多个进程访问。用特殊的系统调用(即对 UNIX 内核的请求)分配和释放内存并设置权限;通过一般的读写操作读写内存段中的数据。 <br />共享内存并不是从某一进程拥有的内存中划分出来的;进程的内存总是私有的。共享内存是从系统的空闲内存池中分配的,希望访问它的每个进程连接它。这个连接过程称为映射,它给共享内存段分配每个进程的地址空间中的本地地址。<br /> 假设在同一系统上有两个进程 A 和 B 正在运行(见 图 1),它们可以通过共转载 2011-03-11 14:12:00 · 6594 阅读 · 0 评论 -
arm-linux-gcc/ld/objcopy/objdump参数总结
arm-linux-gccarm-linux-gcc -Wall -O2 -c -o $@ $< -o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件也就是.o的目标文件 -Wall 指定产生全部的警告信息 -O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高,O后面还可以附带其他的数值,表示提供不同的优化策略。 -c表示只要求编译器进行编译,而不要进行链接,生成以源文件的文件名命名但把其后缀由 .c 或 .cc 变成 .o 的目标文件 -S 只激活转载 2011-03-15 19:59:00 · 3626 阅读 · 1 评论 -
链接过程分析
<br />有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。<br /> 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,Elicpse,Dev C++等),你可能不会发现程序是如何组织起来的(很多人因此而反对初学者使转载 2011-03-24 17:00:00 · 1343 阅读 · 0 评论 -
GNU AS
一 GNU AS简介 GNU AS是GNU汇编器,主要用于把汇编代码转换成二进制代码,并存放到一个object文件中。GNU AS工具本身的使用方法比较简单,主要参考文档《Using as--the GNU Assembler》(2.14)。首先看一下1.1 Structure of this Manual。 This manual is intended to describe what you need to know to use gnu as. We cover the syntax转载 2011-03-24 13:26:00 · 4662 阅读 · 0 评论 -
GNU LD
<br />今天把vivi所用到的ld的用法都看懂了,常见的选项含义也清楚了。翻看了一下kernel的链接脚本,发现相当复杂,并且需要对全局有很好的把握,对整个的地址空间分配也必须清楚。这点暂时还做不到,属于后续工作。先把ld的基本用法总结一下,因为《Linkers and Loaders》还没有读完,所以暂时还不能作出总结。不过,对链接和加载已经有了更深入的认识。在读using ld时,很多地方自然就理解了。慢慢来,把这块知识体协理顺。 1、什么是ld?它有什么作用? ld是GNU binutil转载 2011-03-24 14:41:00 · 6193 阅读 · 10 评论 -
Trap命令之信号处理
<br />一. trap捕捉到信号之后,可以有三种反应方式: <br /> (1)执行一段程序来处理这一信号<br /> (2)接受信号的默认操作 <br /> (3)忽视这一信号<br /><br />二. trap对上面三种方式提供了三种基本形式: <br /> <br /> 第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双引号中的命令串。 <br /> trap 'commands' signal-list <br />原创 2011-03-23 13:18:00 · 2521 阅读 · 0 评论