23,216
社区成员




#include "../LinuxComm.h" //自己写的包含头文件.
int main(int argc , char ** argv)
{
int c,oflag,semid,nsems;
oflag =IPC_EXCL| IPC_CREAT;
printf("Program start...\n");
while( (c=getopt(argc,argv,"e"))!=-1 )
{
switch(c)
{
case 'e': oflag |=IPC_EXCL;
break;
}
}
if(optind!=argc-2)
{
printf("Usage: semcreate [-e] <pathname> <nsems> ,Program will exit...\n");
exit(2);
}
printf("optind=%d, argc=%d\n",optind,argc);
nsems =atoi( argv[optind+1] );
printf("nsems=%d\n",nsems);
semid =semget( ftok(argv[optind],0) , nsems , oflag );
if(-1==semid)
{
printf("semget Failed,errno=%d, Program will exit...\n",errno);
exit(2);
}
printf("Program will exit...\n");
exit(0);
}
#include "../LinuxComm.h"
int
main(int argc, char **argv)
{
int semid, nsems, i;
struct semid_ds seminfo;
unsigned short *ptr;
union semun arg;
printf("Program start...\n");
if (argc < 2)
{
printf("usage: semsetvalues <pathname> [ values ... ]\n");
exit(0);
}
/* 4first get the number of semaphores in the set */
semid = semget(ftok(argv[1], 0), 0, 0);
arg.buf = &seminfo;
semctl(semid, 0, IPC_STAT, arg);
nsems = arg.buf->sem_nsems;
printf("nsems=%d\n",nsems);
/* 4now get the values from the command line */
if (argc != nsems + 2)
{
printf("%d semaphores in set, %d values specified\n", nsems, argc-2);
exit(0);
}
/* 4allocate memory to hold all the values in the set, and store */
ptr = calloc(nsems, sizeof(unsigned short));
arg.array = ptr;
for (i = 0; i < nsems; i++)
ptr[i] = atoi(argv[i + 2]);
semctl(semid, 0, SETALL, arg);
printf("Program will exit...\n");
exit(0);
}
#include "../LinuxComm.h"
int
main(int argc, char **argv)
{
int semid, nsems, i;
struct semid_ds seminfo;
unsigned short *ptr;
union semun arg;
printf("Program start...\n");
if (argc < 2)
{
printf("usage: semgetvalues <pathname>\n");
exit(0);
}
/* 4first get the number of semaphores in the set */
semid = semget(ftok(argv[1], 0), 0, 0);
if(-1==semid)
{
printf("semget Failed,errno=%d, Program will exit...\n",errno);
exit(2);
}
else
printf("semget succeeded!\n");
arg.buf = &seminfo;
semctl(semid, 0, IPC_STAT, arg);
nsems = arg.buf->sem_nsems;
printf("nsems=%d\n",nsems);
/* 4allocate memory to hold all the values in the set */
ptr = calloc(nsems, sizeof(unsigned short));
arg.array = ptr;
/* 4fetch the values and print */
semctl(semid, 0, GETALL, arg);
for (i = 0; i < nsems; i++)
printf("semval[%d] = %d\n", i, ptr[i]);
printf("Program will exit...\n");
exit(0);
}
[pro@rhel5 ~/lnxpro/sysvsema 02:46:57]$l
total 64
-rw-rw-r-- 1 pro pro 473 Apr 13 00:39 makefile
-rwxrwxr-x 1 pro pro 5893 Apr 13 02:43 semcreate
-rw-r--r-- 1 pro pro 732 Apr 13 02:42 semcreate.c
-rwxrwxr-x 1 pro pro 5876 Apr 13 02:43 semgetvalues
-rw-r--r-- 1 pro pro 976 Apr 13 02:43 semgetvalues.c
-rwxrwxr-x 1 pro pro 5871 Apr 13 00:44 semops
-rw-r--r-- 1 pro pro 971 Apr 13 00:44 semops.c
-rwxrwxr-x 1 pro pro 5291 Apr 13 00:39 semrmid
-rw-r--r-- 1 pro pro 325 Apr 13 00:35 semrmid.c
-rwxrwxr-x 1 pro pro 5824 Apr 13 02:10 semsetvalues
-rw-r--r-- 1 pro pro 968 Apr 13 02:10 semsetvalues.c
[pro@rhel5 ~/lnxpro/sysvsema 02:46:58]$./semcreate /tmp.path 3
Program start...
optind=1, argc=3
nsems=3
Program will exit...
[pro@rhel5 ~/lnxpro/sysvsema 02:47:07]$./semsetvalues /tmp.path
Program start...
nsems=4436512
4436512 semaphores in set, 0 values specified
[pro@rhel5 ~/lnxpro/sysvsema 02:47:19]$./semgetvalues /tmp.path
Program start...
semget succeeded!
nsems=-1075867592
Program will exit...
[pro@rhel5 ~/lnxpro/sysvsema 02:47:25]$
[root@rhel5 /home/pro/lnxpro/sysvsema 04:20:26]#ll
total 64
-rwxr-x--- 1 pro pro 473 Apr 13 00:39 makefile
-rwxr-x--- 1 pro pro 5893 Apr 13 02:43 semcreate
-rwxr-x--- 1 pro pro 732 Apr 13 02:42 semcreate.c
-rwxr-x--- 1 pro pro 5876 Apr 13 02:43 semgetvalues
-rwxr-x--- 1 pro pro 976 Apr 13 02:43 semgetvalues.c
-rwxr-x--- 1 pro pro 5871 Apr 13 00:44 semops
-rwxr-x--- 1 pro pro 971 Apr 13 00:44 semops.c
-rwxr-x--- 1 pro pro 5291 Apr 13 00:39 semrmid
-rwxr-x--- 1 pro pro 325 Apr 13 00:35 semrmid.c
-rwxr-x--- 1 pro pro 5824 Apr 13 02:10 semsetvalues
-rwxr-x--- 1 pro pro 968 Apr 13 02:10 semsetvalues.c
[root@rhel5 /home/pro/lnxpro/sysvsema 04:20:27]#ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
[root@rhel5 /home/pro/lnxpro/sysvsema 04:20:30]#./semcreate -e /sysvsema 4
Program start...
optind=2, argc=4
nsems=4
Program will exit...
[root@rhel5 /home/pro/lnxpro/sysvsema 04:20:55]#ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
0xffffffff 32768 root 0 4
------ Message Queues --------
key msqid owner perms used-bytes messages
[root@rhel5 /home/pro/lnxpro/sysvsema 04:20:58]#
[root@rhel5 /home/pro/lnxpro/sysvsema 04:21:40]#./semsetvalues /sysvsema 123 456 0 1
Program start...
nsems=4
Program will exit...
[root@rhel5 /home/pro/lnxpro/sysvsema 04:22:01]#./semgetvalues /sysvsema
Program start...
semget succeeded!
nsems=4
semval[0] = 123
semval[1] = 456
semval[2] = 0
semval[3] = 1
Program will exit...
[root@rhel5 /home/pro/lnxpro/sysvsema 04:22:14]#
[root@rhel5 /home/pro/lnxpro/sysvsema 04:22:14]#ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
0xffffffff 32768 root 0 4
------ Message Queues --------
key msqid owner perms used-bytes messages
[root@rhel5 /home/pro/lnxpro/sysvsema 04:24:14]#
[pro@rhel5 ~/lnxpro/sysvsema 02:58:18]$l
total 64
-rw-rw-r-- 1 pro pro 473 Apr 13 00:39 makefile
-rwxrwxr-x 1 pro pro 5893 Apr 13 02:43 semcreate
-rw-r--r-- 1 pro pro 732 Apr 13 02:42 semcreate.c
-rwxrwxr-x 1 pro pro 5876 Apr 13 02:43 semgetvalues
-rw-r--r-- 1 pro pro 976 Apr 13 02:43 semgetvalues.c
-rwxrwxr-x 1 pro pro 5871 Apr 13 00:44 semops
-rw-r--r-- 1 pro pro 971 Apr 13 00:44 semops.c
-rwxrwxr-x 1 pro pro 5291 Apr 13 00:39 semrmid
-rw-r--r-- 1 pro pro 325 Apr 13 00:35 semrmid.c
-rwxrwxr-x 1 pro pro 5824 Apr 13 02:10 semsetvalues
-rw-r--r-- 1 pro pro 968 Apr 13 02:10 semsetvalues.c
[pro@rhel5 ~/lnxpro/sysvsema 02:58:18]$./semcreate /tmp.test 4
Program start...
optind=1, argc=3
nsems=4
Program will exit...
[pro@rhel5 ~/lnxpro/sysvsema 02:58:30]$./semsetvalues /tmp.test 4 5 6 7
Program start...
nsems=4436512
4436512 semaphores in set, 4 values specified
[pro@rhel5 ~/lnxpro/sysvsema 02:58:45]$./semgetvalues /tmp.test
Program start...
semget succeeded!
nsems=-1081802104
Program will exit...
[pro@rhel5 ~/lnxpro/sysvsema 02:58:53]$