共享内存的问题 请高手指教
extern "C " {
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <getopt.h>
}
void usage(int argc, char** argv)
{
printf( "%s arguments\n ", argv[0]);
printf( "-h help mode.\n ");
printf( "-c create shm.\n ");
printf( "-m <message> write message into shm.\n ");
printf( "-r read message from shm.\n ");
printf( "-d destroy shm.\n ");
}
typedef enum {SHM_UNKNOW = 0, SHM_CREATE, SHM_DESTROY, SHM_WRITE, SHM_READ} SHM_MODE;
#define SHM_KEY 1234
#define SHM_SIZE 1000
/**IPC_ALLOC is solaris specific
*/
#if !defined( IPC_ALLOC )
#define IPC_ALLOC IPC_CREAT
#endif
/** create shm with SHM_KEY
* @return shmid
*/
int shm_create();
/** open shm with SHM_KEY
* @return shmid
*/
int shm_open();
/** destroy shm which shm key is SHM_KEY
*/
void shm_destroy(int shmid);
/** write a string into shm, the string should be teminated by null.
*/
void shm_write(int, char*);
/** read message from shm
@param the shmid
*/
void shm_read(int shmid);
/** detach from shm
*/
void shm_close(const void* root);
int main(int argc, char** argv)
{
SHM_MODE shm_mode = SHM_UNKNOW;
char* message = NULL;
int shmid = 0;
int opt = 0 ;
extern int optind ;
extern char* optarg ;