Операционная система UNIX. Руководство программиста



         

Программа-пример - часть 2


case 2: /* Выбрать и изменить поле (поля) ассоциированной структуры данных */ /* Получить исходные значения структуры данных */ rtrn = shmctl (shmid, IPC_STAT, buf); printf ("Введите номер изменяемого поля:\n"); printf (" shm_perm.uid = 1\n"); printf (" shm_perm.gid = 2\n"); printf (" shm_perm.mode = 3\n"); printf (" Выбор = "); scanf ("%d", &choice);

switch (choice) { case 1: printf ("\nВведите ид-р пользователя: "), scanf ("%d", &buf->shm_perm.uid); printf ("\nИд-р пользователя = %d\n", buf->shm_perm.uid); break;

case 2: printf ("\nВведите ид-р группы: "), scanf ("%d", &buf->shm_perm.gid); printf ("\nИд-р группы = %d\n", buf->shm_perm.uid); break;

case 3: printf ("\nВведите восьмеричный код прав: "); scanf ("%o", &buf->shm_perm.mode); printf ("\nПрава на операции = 0%o\n", buf->shm_perm.mode); break; }

/* Внести изменения */ rtrn = shmctl (shmid, IPC_SET, buf); break;

case 3: /* Удалить идентификатор и ассоциированную структуру данных */ rtrn = shmctl (shmid, IPC_RMID, NULL); break;

case 4: /* Удерживать разделяемый сегмент в памяти */ rtrn = shmctl (shmid, SHM_LOCK, NULL); break;

case 5: /* Перестать удерживать сегмент в памяти */ rtrn = shmctl (shmid, SHM_UNLOCK, NULL); }

if (rtrn == -1) { /* Сообщить о неудачном завершении */ printf ("\nshmctl завершился неудачей!\n"); printf ("\nКод ошибки = %d\n", errno); } else { /* При успешном завершении сообщить ид-р shmid */ printf ("\nshmctl завершился успешно, "); printf ("идентификатор shmid = %d\n", shmid); }

exit (0); }




Содержание  Назад  Вперед