Linux 进程互斥量
网上找了下Linux进程间互斥的实现,两种方法,semaphore 和 文件锁。刚开始也尝试用semaphore来实现,但发现sem_wait和singal无法实现Windows下CirtSec,而采用了后者文件锁;
但对于读写锁来说实用文件锁实现,存在一定的不足,它分开了读写锁,而没有分开解读写锁,利用UnLock来统一解读写锁,对于这进程间读写锁的实现,还需要再进一步了解才可!
基于文件锁而实现的进程间互斥
/*
* File: MProcessCritSec.h
* Author: root
*
* Created on 2010年5月13日, 上午4:37
*/
#ifndef _MPROCESSCRITSEC_H
#define _MPROCESSCRITSEC_H
#include <fcntl.h>
#include <string>
using namespace std;
class MProcessCritSec
{
public:
MProcessCritSec(char *pFileName);
virtual ~MProcessCritSec();
public:
/*
* 锁
*/
bool Lock();
/*
* 解锁
*/
bool UnLock();
/*
* 非阻塞锁
*/
bool TryLock(int nWaitTime = 60);
/*
* 判断锁的状态
*/
bool IsLock();
private:
//
flock m_lock;
//
int m_nLockValue;
//
bool m_bLocked;
//
string m_strFilePath;
};
#endif /* _MPROCESSCRITSEC_H */
/*
* File: MProcessCritSec.cpp
* Author: root
*
* Created on 2010年5月13日, 上午4:37
*/
#include "MProcessCritSec.h"
#include <errno.h>
using namespace std;
MProcessCritSec::MProcessCritSec(char *pFileName)
:m_bLocked(false)
{
m_bLocked = false;
m_strFilePath.append("/tmp/");
m_strFilePath.append(pFileName);
m_nLockValue = open(m_strFilePath.c_str(), O_WRONLY|O_CREAT, 0777);
}
MProcessCritSec::~MProcessCritSec()
{
close(m_nLockValue);
remove(m_strFilePath.c_str());
}
/*
* 函数作用:锁
* 函数参数:
* 函数返回:
* bool
*/
bool MProcessCritSec::Lock()
{
m_lock.l_type = F_WRLCK;
m_lock.l_whence = SEEK_SET;
m_lock.l_start = 0;
m_lock.l_len = 0;
if ( fcntl(m_nLockValue, F_SETLKW, &m_lock) != 0 )
return false;
m_bLocked = true;
return true;
}
/*
* 函数作用
相关文档:
Linux基本操作命令
首先介绍一个名词“控制台(console)”,它就是我们通常见到的使用字符操作界面的人机接口,例如dos。我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令。我们现在要了解的是基于Linux操作系统的基本控制台命令。有一点一定要注意,和dos命令不同的 ......
1、软件安装 卸载,分几种情况:
A: RPM包,这种软件包就像windows的EXE安装 文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装 非常方便,在图形界面里你只需要双击就能自动安装 。
==如何卸载:
1、打开一个SHELL终端
2、因为Linux 下的软件名都包括版本号,所以卸载前最好先确定 ......
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。
在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Ma ......
一、下载jdk1.5
从http://www.sun.com/网站下载jdk1.5
下载:jdk-1_5_0_15-linux-i586-rpm.bin
二、安装jdk
1.
# chmod +x jdk-1_5_0_15-linux-i586-rpm.bin
# ./jdk-1_5_0_15-linux-i586-rpm.bin
按提示按输入yes,在同一目录会得到一个jdk-1_5_0_15-linux-i586-rpm
通过# rpm –ivh jdk-1 ......