#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <pthread.h>
pthread_mutex_t* g_mutex;
//创建共享的mutex
void init_mutex(void)
{
int ret;
//g_mutex一定要是进程间可以共享的,否则无法达到进程间互斥
g_mutex=(pthread_mutex_t*)mmap(NULL, sizeof(pthread_mutex_t), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
if( MAP_FAILED==g_mutex )
{
perror("mmap");
exit(1);
}
//设置attr的属性
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
//一定要设置为PTHREAD_PROCESS_SHARED
//具体可以参考http://blog.chinaunix.net/u/22935/showart_340408.html
ret=pthread_mutexattr_setpshared(&attr,PTHREAD_PROCESS_SHARED);
if( ret!=0 )
{
perror("init_mutex pthread_mutexattr_setpshared");
exit(1);
}
Linux下的多进程间共享资源的互斥访问
最新推荐文章于 2023-12-24 15:59:06 发布