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

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 mysql 服务器慢的原因

这几天Linux服务器很慢,很着急找不到解决办法!后百度相关字眼,查找到是MySQL的问题,
如下为解决方案
:
连接MySQL速度慢的解决方法.
PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的
MYSQL开启了DNS的反向解析,在MY.CNF(UNIX或LINUX系统下)或MY.INI ......

linux下cron异常处理小结

1.failed to open PAM security session: No such file or directory
异常描述:查看/var/log/cron时会发现如下异常日志
May 14 09:10:01 localhost crond[20319]: (CRON) /export/home/username (No such file or directory)
May 14 09:10:01 localhost crond[20319]: CRON (username) ERROR: failed to open PAM securi ......

Android 2.1在linux下的环境开发搭建

linux下的Android环境搭建和项目创建
Linux下的Android环境搭建
   Linux下的Android SDK 2.1 platform包和Android SDK r05的开发工具包下载:
   1. 翻墙地址:
http://develop.android.com地址在国内不通过代理是上不去了的,最近一段时间可用的地址可以按照下面:
    &nbs ......

Linux中变量$#,$@,$0,$1,$2的含义

我们先写一个简单的脚本,执行以后再解释各个变量的意义
  
  # touch variable
  # vi variable
  
  脚本内容如下:
  
  #!/bin/sh
  echo "number:$#"
  echo "scname:$0"
  echo "first :$1"
  echo "second:$2"
  echo "argume:$@"
  
  保存退出
  
  赋予脚本 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号