?? neipc.c
字號:
/*
ipc.c -- IPC opreation
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include "../incl/mytools.h"
key_t ne_getipckey ( msgfile, id )
char * msgfile;
char id;
{
return ( ftok ( ( char * ) getfname ( "WORKDIR", msgfile ), id ) );
}
ne_creat_msg ( msgfile, id )
char * msgfile;
char id;
{
key_t key;
int msgid;
if ( ( key = getipckey ( msgfile, id ) ) < 0 )
return ( -1 );
if ( ( msgid = msgget ( key, IPCCREAT ) ) < 0 )
return ( -1 );
return ( msgid );
}
ne_get_msg ( msgfile, id )
char * msgfile;
char id;
{
key_t key;
int msgid;
if ( ( key = getipckey ( msgfile, id ) ) < 0 )
return ( -1 );
if ( ( msgid = msgget ( key, IPCGET ) ) < 0 )
return ( -1 );
return ( msgid );
}
ne_rm_msg ( msgfile, id )
char * msgfile;
char id;
{
int msgid;
if ( ( msgid = get_msg ( msgfile, id ) ) < 0 )
return ( -1 );
if ( msgctl ( msgid, IPC_RMID, NULL ) < 0 )
return ( -1 );
return ( 0 );
}
char * ne_creat_shm ( shmfile, id, len )
char * shmfile;
char id;
int len;
{
int shmid;
key_t key;
char * shmptr;
if ( ( key = getipckey ( shmfile, id ) ) < 0 )
return ( NULL );
if ( ( shmid = shmget ( key, len, IPCCREAT ) ) < 0 )
return ( NULL );
if ( ( shmptr = ( char * ) shmat ( shmid, 0, 0 ) ) == NULL )
return ( NULL );
return ( shmptr );
}
char * ne_get_shm (shmfile, id, len)
char *shmfile;
char id;
int len;
{
int shmid;
key_t key;
char *shmptr;
if ( ( key = getipckey ( shmfile, id ) ) < 0 )
return ( NULL );
if ( ( shmid = shmget ( key, len, IPCGET ) ) < 0 )
return ( NULL );
if ( ( shmptr = ( char * ) shmat ( shmid, 0, 0 ) ) == NULL )
return ( NULL );
return ( shmptr );
}
ne_dt_shm ( shmptr )
char * shmptr;
{
if ( shmdt ( shmptr ) < 0 )
return ( -1 ) ;
return ( 0 );
}
ne_rm_shm ( shmfile, id )
char * shmfile;
char id;
{
key_t key;
int shmid;
if ( ( key = getipckey ( shmfile, id ) ) < 0 )
return ( -1 );
if ( ( shmid = shmget ( key, 2, IPCGET ) ) < 0 )
return ( -1 );
if ( shmctl ( shmid, IPC_RMID, NULL ) < 0 )
return ( -1 );
return ( 0 );
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -