易截截图软件、单文件、免安装、纯绿色、仅160KB

6)Linux程序设计入门

6)Linux程序设计入门--消息管理
前言:Linux下的进程通信(IPC)
Linux下的进程通信(IPC)
POSIX无名信号量
System V信号量
System V消息队列
System V共享内存
1。POSIX无名信号量 如果你学习过操作系统,那么肯定熟悉PV操作了.PV操作是原子
操作.也就是操作是不可以中断的,在一定的时间内,只能够有一个进程的代码在CPU上面
执行.在系统当中,有时候为了顺利的使用和保护共享资源,大家提出了信号的概念. 假设
我们要使用一台打印机,如果在同一时刻有两个进程在向打印机输出,那么最终的结果会
是什么呢.为了处理这种情况,POSIX标准提出了有名信号量和无名信号量的概念,由于Li
nux只实现了无名信号量,我们在这里就只是介绍无名信号量了. 信号量的使用主要是用
来保护共享资源,使的资源在一个时刻只有一个进程所拥有.为此我们可以使用一个信号
灯.当信号灯的值为某个值的时候,就表明此时资源不可以使用.否则就表>示可以使用.
为了提供效率,系统提供了下面几个函数
POSIX的无名信号量的函数有以下几个:
#include <semaphore.h>
int sem_init(sem_t *sem,int pshared,unsigned int value);
int sem_destroy(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_getvalue(sem_t *sem);
sem_init创建一个信号灯,并初始化其值为value.pshared决定了信号量能否在几个进程
间共享.由于目前Linux还没有实现进程间共享信号灯,所以这个值只能够取0. sem_dest
roy是用来删除信号灯的.sem_wait调用将阻塞进程,直到信号灯的值大于0.这个函数返回
的时候自动的将信号灯的值的件一.sem_post和sem_wait相反,是将信号灯的内容加一同
时发出信号唤醒等待的进程..sem_trywait和sem_wait相同,不过不阻塞的,当信号灯的值
为0的时候返回EAGAIN,表示以后重试.sem_getvalue得到信号灯的值.
由于Linux不支持,我们没有办法用源程序解释了.
这几个函数的使用相当简单的.比如我们有一个程序要向一个系统打印机打印两页.我们
首先创建一个信号灯,并使其初始值为1,表示我们有一个资源可用.然后一个进程调用se
m_wait由于这个时候信号灯的值为1,所以这个函数返回,打印机开始打印了,同时信号灯
的值为0 了. 如果第二个进程要打印,调用sem_wait时候,由于信号灯的值为0,资源不可
用,于是被阻塞了.当第一个进程打印完成以后,调用sem_post信号灯的值为1了,这


相关文档:

完善Linux系统

 
完善Linux系统
1.开机自动挂载window分区
   
fedora10虽然能自动挂载,但是挂载的分区有时会不认汉字文件夹
 
 从终端用vi或gedit打开/etc/fstab,在其中添加:
 /dev/sda1 /mnt/1 ntfs default 0 0
 注:第一项是分区驱动地址
   ......

Linux 线程Detach&Join


1.等待线程
pthread_join 函数用来等待一个线程的结束,类似于进程的 wait 函数。
此函数将阻塞调用当前线程的进程,直到此线程退出。即这个函数是一个线程阻塞的函数,调用它的进程将一直等待到被等待的线程结束为,当函数返回时,处于被等待状态的线程资源被收回。如果执行成功,将返回 0,如果失败则返回一个非 0。 ......

在Linux上交叉编译windows程序

转自:http://www.cublog.cn/u/12592/showart_163722.html
最近几天搞 wxWidgets,由于要同时编译应用程序的 Windows 版本,又懒得在虚拟机里面编译程序,于是想到用交叉编译的方式在 Linux 上编译好 Windows 版本的程序,再用 Wine 或者虚拟机来执行。试了一下,这种方法很好用,比在虚拟机里面编译程序快很多。
我的操作 ......

linux串口应用开发

linux串口应用开发
2009年10月20日 星期二 14:16
1、串口概述
    用户常见的数据通信的基本方式有两种:并行通信和串行通信。
    串行通信是计算机常用的接口,如:RS-232-C接口。该标准规定采用一个DB25芯引脚连接器或DB9芯引脚连接器。芯片内部常具有UART控制器,其可工作于Interrup ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号