11 #include <semaphore.h> 24 if( (
shm_id = shmget( ftok( shm_key,
'R' ), 80, IPC_CREAT|IPC_EXCL|0666)) == -1){
25 if( errno == EEXIST ){
27 shm_id = shmget( ftok( shm_key,
'R' ), 80, 0666);
41 for( fa=strlen(shm_key)-1 ; fa > 0 ; --fa ){
42 if( shm_key[fa] ==
'/' ){
47 sem = sem_open(&shm_key[fa], O_CREAT, (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH), 1);
49 if(
sem == SEM_FAILED ){
54 clock_gettime( CLOCK_REALTIME, &timeout);
56 if( (sem_timedwait(
sem, &timeout ) != 0) && (errno == ETIMEDOUT) ){
59 sem_getvalue(
sem, &semval );
81 shmctl(
shm_id, IPC_RMID, 0);
100 snprintf( filepath,
sizeof(filepath),
"/proc/%d", (
int)check_pid );
101 return (stat(filepath,&get_stat)==0)?
true:
false;
DEVICE_MUTEX(const char *shm_key, int timeout_sec=1)
bool is_alive(pid_t check_pid)