/*------------------------------------------------------------------------- * * tstshm.c * Test of System V Shared Memory Emulation * * Copyright (c) 1999, repas AEG Automation GmbH * * * IDENTIFICATION * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstshm.c,v 1.1 1999/12/16 16:52:52 momjian Exp $ * *------------------------------------------------------------------------- */ #include #include #include #include int main( int argc, char **argv ) { int c, errflg = 0; char s[80]; key_t key = 0x1000; size_t size = 256; int shmid = -1; caddr_t addr = NULL; optarg = NULL; while( !errflg && ( c = getopt( argc, argv, "k:s:" ) ) != -1 ) { switch( c ) { case 'k': key = atoi( optarg ); break; case 's': size = atoi( optarg ); break; default: errflg++; } } if( errflg ) { printf( "usage: tstshm [-k key] [-s size]\n" ); exit( 1 ); } do { printf( "shm(g)et, shm(a)t, shm(d)t, shm(c)tl, (w)rite, (r)ead, e(x)it: " ); scanf( "%s", s ); switch( s[0] ) { case 'g': shmid = shmget( key, size, IPC_CREAT | SHM_R | SHM_W ); if( shmid == -1 ) perror( "shmget" ); break; case 'a': addr = shmat( shmid, NULL, 0 ); if( addr == ( void * )-1 ) perror( "shmat" ); break; case 'd': if( shmdt( addr ) == -1 ) perror( "shmdt" ); else addr = NULL; break; case 'c': if( shmctl( shmid, IPC_RMID, NULL ) == -1 ) perror( "shmctl" ); else shmid = -1; break; case 'w': printf( "String to write: " ); scanf( "%s", addr ); break; case 'r': puts( addr ); break; } } while( s[0] != 'x' ); return 0; }