neipc.c
来自「sco unix下c语言开发工具库」· C语言 代码 · 共 168 行
C
168 行
/*
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;
/**jgdelete
if ( ( msgid = get_msg ( msgfile, id ) ) < 0 )
return ( -1 );
if ( msgctl ( msgid, IPC_RMID, NULL ) < 0 )
return ( -1 );
jgdelete**/
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 + =
减小字号Ctrl + -
显示快捷键?