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


         

и изменить поле ассоциированной структуры


case 9: /* Выбрать и изменить поле ассоциированной структуры данных */ /* Опросить текущее состояние */ rtrn = semctl (semid, 0, IPC_STAT, arg.buf); if (rtrn == -1) goto ERROR;

printf ("\nВведите номер поля, "); printf ("которое нужно изменить: \n"); printf (" sem_perm.uid = 1\n"); printf (" sem_perm.gid = 2\n"); printf (" sem_perm.mode = 3\n"); printf (" Выбор = "); scanf ("%d", &choice);

switch (choice) { case 1: /* Изменить ид-р владельца */ printf ("\nВведите ид-р владельца: "); scanf ("%d", &arg.buf->sem_perm.uid); printf ("\nИд-р владельца = %d\n", arg.buf->sem_perm.uid); break;

case 2: /* Изменить ид-р группы */ printf ("\nВведите ид-р группы = "); scanf ("%d", &arg.buf->sem_perm.gid); printf ("\nИд-р группы = %d\n", arg.buf->sem_perm.uid); break;

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

/* Внести изменения */ rtrn = semctl (semid, 0, IPC_SET, arg.buf); break;

case 10: /* Удалить ид-р множества семафоров и ассоциированную структуру данных */ rtrn = semctl (semid, 0, IPC_RMID, 0); } if (rtrn == -1) { /* Сообщить о неудачном завершении */ ERROR: printf ("\nsemctl завершился неудачей!\n"); printf ("\nКод ошибки = %d\n", errno); } else { printf ("\nmsgctl завершился успешно,\n"); printf ("идентификатор semid = %d\n", semid); }

exit (0); }




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