2013年3月12日

linux 多线程编程

摘要: 1.Linux进程与线程Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和当前目录状态。Linux通过fork创建子进程与创建线程之间是有区别的:fork创建出该进程的一份拷贝,这个新进程拥有自己的变量和自己的PID,它的时间调度是独立的,它的执行几乎完全独立于父进程。进程可以看成一个资源的基本单位,而线程是程序调度的基本单位,一个进程内部的线程之间共享进程获得的时间片。2._REENTRANT宏在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。在一个线程准备获取刚才的错误代码时,该变量很容易 阅读全文

posted @ 2013-03-12 09:14 DJYang 阅读(171) 评论(0) 推荐(1) 编辑

2013年3月11日

进程间通信——简述 ipcs 命令——进程间通信

摘要: ipcs 命令ipcs - 分析消息队列、共享内存和信号量 ipcs - report status of interprocess communication facilitiesipcs displays certain information about active interprocess communication facilities. With no options, ipcs displays informationin short format for the message queues, shared memory segments, and semaphores th 阅读全文

posted @ 2013-03-11 15:09 DJYang 阅读(229) 评论(0) 推荐(0) 编辑

2013年3月8日

linux 信号处理机制——signal

摘要: 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。一、信号的基本概念本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都特别重要。下面就来看看什么是信号。1、基本概念软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill 阅读全文

posted @ 2013-03-08 10:50 DJYang 阅读(1451) 评论(0) 推荐(0) 编辑

2013年3月5日

浅析malloc & free工作原理

摘要: 平时我们在码程序的时候,经常会遇到要动态申请内存,申请之后当然要记得释放,我们用的最多的当然就是malloc(申请)/free(释放),现在来简单分析一下其基本工作原理:图1 到 图8 给出了 malloc & free 的基于链表简单实现图1图2图3图4图5图6图7图8图中白色背景的框表示malloc管理的空闲内存块,深灰色背景的框不归malloc管,可能是已分配给用户的内存块,也可能是不属于当前进程;break之上的地址不属于当前进程,需要通过brk系统调用向内核申请。每个内存块都有一个头节点,里面有一个指针字段和一个长度字段,指针字段把所有空闲块的头节点串在一起,组成一个环形链表 阅读全文

posted @ 2013-03-05 15:28 DJYang 阅读(924) 评论(1) 推荐(2) 编辑

动态库的生成和使用方法

摘要: linux 中的动态库又叫共享对象库:Shared Object Library,就是我们看到的 *.so(shared object) 文件,又名动态连接库: Dynamic Linked Library; 创建共享库: 1)写源程序 myku.h business.c view.c 2)编译 gcc -fpic -c business.c==>business.o gcc -fpic -c view.c ==>view.o 3)生成共享库文件 gcc -shared business.o view.o -olibmyku.so 2,3一次完成: gcc -fpic -share 阅读全文

posted @ 2013-03-05 09:31 DJYang 阅读(453) 评论(0) 推荐(0) 编辑

静态库的生成和使用方法

摘要: 1)写源程序,包括写头文件 myku.h business.c view.c 2)编译生成xxx.o文件 gcc -c business.c ==> business.o gcc -c view.c ==> view.o 3)将xxx.o打包成档案文件,此档案文件就是静态库文件 ar -r libmyku.a business.o view.o==> libmyku.a 使用静态库文件的方式: 1)写源程序 use.c 2)编译 gcc -c use.c ==> use.o 3)连接 第一种方式:gcc use.o libmyku.a ==> a.out第二种连接 阅读全文

posted @ 2013-03-05 09:25 DJYang 阅读(594) 评论(0) 推荐(1) 编辑

导航