⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 neipc.c

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 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 + -