03 2012 档案

进程间通信程序设计1
摘要:一、进程间通讯概述1. 目的(为什么进程间需要通信?)1)数据传输:一个进程需要将它的数据发送给另一个进程。2)资源共享:多个进程之间共享同样的资源。3)通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。4)进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变。2. 发展Linux进程间通信(IPC)由以下几部分发展而来:1)UNIX进程间通信2)基于System V进程间通信3)POSIX进程间通信POSIX(Portable Operating System Interface) 阅读全文

posted @ 2012-03-31 21:25 n哖苡逅 阅读(2410) 评论(0) 推荐(2)

Linux man命令的使用方法
摘要:Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。Linux的man手册共有以下几个章节:1 Executable programs or shell commands2 System calls (functions provided by the kernel)3 Library calls (functions within program libraries)4 Special files (usually found in /dev)5 File formats and conventions eg /etc/passwd6 Games 阅读全文

posted @ 2012-03-31 18:45 n哖苡逅 阅读(513) 评论(0) 推荐(0)

void及void *的理解
摘要:许多初学者对 C/C++语言中的 void 及 void 指针类型不甚理解,因此在使用上出现了一些错误。本文将对 void 关键字的深刻含义进行解说,并详述 void 及void指针类型的使用方法与技巧。 void 的含义 void 的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void 几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void 变量,让我们试着来定义:void a; 这行语句编译时会出错,提示“illegal use of type ’void’”。不过,即使 void a的编译不会出错,它也没有任何实际意义。 void 阅读全文

posted @ 2012-03-31 17:51 n哖苡逅 阅读(871) 评论(0) 推荐(0)

函数指针和指针函数
摘要:一、函数指针 函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参数。函数指针的声明方法为: 函数类型 (标志符指针变量名) (形参列表); 注1:“函数类型”说明函数的返回类型,“(标志符 指针变量名 )”中的括号不能省,若省略整体则成为一个函... 阅读全文

posted @ 2012-03-31 17:38 n哖苡逅 阅读(617) 评论(1) 推荐(1)

c语言exit和return区别,在fork和vfork中使用
摘要:exit函数在头文件stdlib.h中。exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return():返回函数,若在main主函数中,则会退出函数并返回一值,可以写为return(0),或return 0。详细说:1. return返回函数值,是关键字;exit是一个函数。 2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。 3. return是函数的退出(返回);exit是进程的退出。 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。 5. return用于结束一个 阅读全文

posted @ 2012-03-31 14:00 n哖苡逅 阅读(8223) 评论(1) 推荐(3)

进程控制
摘要:一、进程控制理论基础定义:进程是一个具有一定独立功能的程序的一次运行活动。特点:动态性、并发性、独立性、异步性。进程调度的状态如图所示:进程ID(PID):标识进程的唯一数字;父进程的ID(PPID):创建子进程的进程;用户ID(UID):启动进程的的用户。进程互斥:进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止。临界资源:操作系统中将一次只允许一个进程访问的资源称为临界资源。临界区:进程中访问临界资源的那段程序代码称为临界区。为实现对临界资源的互斥访问,应保证诸进程互斥地进入各自的临界区。进程同步 阅读全文

posted @ 2012-03-31 10:24 n哖苡逅 阅读(763) 评论(0) 推荐(0)

LINUX 内核源文件介绍以及头文件介绍
摘要:*******************LINUX 内核(0.11)源文件介绍******************1、内核源文件放置目录:||————boot 系统引导汇编程序目录||————fs 文件系统目录||————include 头文件目录||————init 内核初始化程序目录||————kernel 内存进程调度、信号处理、系统调用等程序的目录||————lib 内核库函数目录||————mm 内存管理程序目录||————tools 生成内核Image文件的工具程序目录||————Makefile文件|2、引导启动程序目录boot 包含3个汇编语言文件,是内核源文件中最先被编译的程序 阅读全文

posted @ 2012-03-30 15:06 n哖苡逅 阅读(4282) 评论(0) 推荐(0)

linux系统调用和库函数调用
摘要:Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》(英文原版为《Beginning Linux Programming》,作者是Neil Matthew和Richard Stones)第三章: Working with files。 1. 系统调用系统调用提供的函数如open, close, read, write, ioctl等,需包含头文件unistd.h。以write为例:其函数原型为 size_t write(int fd, const void *buf, size_t nbytes) 阅读全文

posted @ 2012-03-30 14:56 n哖苡逅 阅读(1345) 评论(0) 推荐(0)

C语言中.h和.c文件解析(很精彩)
摘要:简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息。(生成.exe文件) 编译器在编译时是以C文件为单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位... 阅读全文

posted @ 2012-03-30 12:39 n哖苡逅 阅读(135155) 评论(10) 推荐(35)

Linux的profile与bashrc的分析
摘要:以后的开发中会设计到交叉编译器环境变量的设置,可以在以下几个文件中设置,所以这里简单分析下下面的几个文件。 etc/profile: 此文件为系统的所有用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。 etc/bash.bashrc: 为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。 ~/.profile :用户设置自己的信息,当用户登录时该文件仅执行一次。默认情况下,该文件设置一些环境变量,执行用户.bashrc文件 ~/.bashrc: 该文件包含专用于用户的bash. 阅读全文

posted @ 2012-03-29 19:46 n哖苡逅 阅读(1069) 评论(0) 推荐(0)

Ubuntu 11.10配置
摘要:今天安装了Ubuntu 11.10,使用的vmwave8.0,如果使用vmwave7.0,在文件共享会出现问题。不过安装vmwave8.0之后,vmwave7.0下安装的虚拟机仍然可以运行,很不错。1. 安装vim系统自带的vi不支持方向键和退格键,重新安装vim。 sudo apt-get remove vim-common --卸载设置好软件源在使用sudo apt-get update更新列表 sudo apt-get install vim --重新安装2.gedit中文乱码 缺省配置下,用 Ubuntu 的文本编辑器(gedit)打开 GB18030/GBK/GB... 阅读全文

posted @ 2012-03-29 19:13 n哖苡逅 阅读(438) 评论(0) 推荐(0)

如何查看 ubuntu 版本信息
摘要:cat /etc/issue返回结果Ubuntu 6.06 "Dapper Drake" Development Branch \n \l或者cat /proc/version返回结果Linuxversion 2.6.12-10-k7 (buildd@terranova) (gcc version 3.4.5 20050809 (prerelease) (Ubuntu 3.4.4-6ubuntu8.1)) #1 Sat Mar 11 16:59:38 UTC 2006或者uname -a返回结果Linux guoshuang 2.6.15-20-686 #1 SMP PRE 阅读全文

posted @ 2012-03-29 19:13 n哖苡逅 阅读(537) 评论(0) 推荐(0)

VIM配置让你事半功倍
摘要:Ubuntu11.10的vim升级后,版本为vi Improved 7.3.154功能很强大了。不过,程序员要根据自己的习惯配置好vimrc文件,是vim更加得心应手。注:一般用户在自己的当前目录下的.vimrc修改,修改内容只对本用户有效,要想全部有效,可以修改/etc/vim/vimrc.在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把.vimrc文件创 阅读全文

posted @ 2012-03-29 18:20 n哖苡逅 阅读(6069) 评论(0) 推荐(0)

Ubuntu11.10安装及配置
摘要:Ubuntu11.1的安装不多讲了,我使用的是vmware7.0,也可以使用vmware8.0。首先把网络调通,才能从网上更新软件,这里我不想自己设置ip,就直接使用的是Bridge,自动DHCP。1. 将Ubuntu11.10彻底变为中文 进入系统,然后点击屏幕的右上角的一个按钮,出现system setting,就是系统设置,然后选择Software Source,然后选择Mirror,就是更新的镜像,默认的是美国,那更新的时候就会特别慢,建议选择中国,就是China然后建议选择163的镜像,经过测试,网易的镜像还是挺快的,好似sohu的也不慢,其他的几个没有测试过。 然后再在Syst.. 阅读全文

posted @ 2012-03-29 16:32 n哖苡逅 阅读(480) 评论(0) 推荐(0)

GDB调试工具的使用
摘要:GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。从上面看来,GDB和一般的 阅读全文

posted @ 2012-03-29 12:57 n哖苡逅 阅读(379) 评论(0) 推荐(0)

ubuntu9.10升级到10.04的方法
摘要:在学习OK6410使用的ubuntu9.10,这个也是其配套的版本,但是vim使用有点不方便,想升级到ubuntu新的版本。重要提示:一定要看!在你升级之前,请一定一定一定要先把你之前安装的显卡驱动卸载,返回到安装时候自带的开 源驱动。切记!否则升级之后会进不去桌面环境!首先,我们先换10.04的源:sudo gedit /etc/apt/sources.list在打开的文档里将原 来的内容全部删除,添加下面列表中最适合你的源(注意不要全部添加),选择一个最合适你的即可,复制到你的列表中,然后保存列表。Ubuntu 10.04源列表:台湾代码:deb http://tw.archive.ubu 阅读全文

posted @ 2012-03-29 10:00 n哖苡逅 阅读(472) 评论(0) 推荐(0)

ls下文件的颜色
摘要:白色:表示普通文件蓝色:表示目录绿色:表示可执行文件红色:表示压缩文件浅蓝色:链接文件红色闪烁:表示链接的文件有问题黄色:表示设备文件灰色:表示其他文件这是linux系统约定的默认颜色在环境变量$LS_COLORS上修改就行,想永久保存就在~/.bashrc里改默认的是:echo $LS_COLORSrs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex= 阅读全文

posted @ 2012-03-28 15:35 n哖苡逅 阅读(396) 评论(0) 推荐(0)

静态库和动态库
摘要:库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。2. 动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数 阅读全文

posted @ 2012-03-28 15:03 n哖苡逅 阅读(408) 评论(0) 推荐(0)

在Linux中创建静态库.a和动态库.so
摘要:我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。2. 动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执 阅读全文

posted @ 2012-03-28 12:48 n哖苡逅 阅读(14234) 评论(2) 推荐(10)

GCC编译过程
摘要:gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing)· 编译(Compiling)· 汇编(Assembling)· 链接(Linking)以hello.c为例子,在这四个步骤中可以设置选项分别生成hello.i, hello.s, hello.o以及最终的hello文件:hello.c : 最初的源代码文件;hello.i : 经过编译预处理的源代码;hello.s : 汇编处理后的汇编代码;hello.o : 编译后的目标文件,即含有最终编译出的机器码,但它里面所引用的其他文件中函数的内存位置尚未定义。hello / a. 阅读全文

posted @ 2012-03-28 12:19 n哖苡逅 阅读(5702) 评论(0) 推荐(3)

linux下Makefile学习
摘要:转自陈皓 (CSDN),加上自己的学习体会!概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别 阅读全文

posted @ 2012-03-27 21:52 n哖苡逅 阅读(4425) 评论(0) 推荐(0)

导航