[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Добавление записей о служащих - Пример
Эта программа иллюстрирует, как получать и изменять флаги состояния
файла с использованием fcntl(2). Программа работает следующим образом:
10 Объявляется структура записи о служащем
13-16 Открывается файл для чтения и записи
20-23 Получаются флаги состояния файла
24-25 Флаг O_APPEND и флаги состояния файла переустанавливаются
26-34 Пользователю предлагается ввести информацию о новом
служащем. Она дописывается в конец файла.
Файл: addemp1.c
ДОБАВЛЕНИЕ ЗАПИСЕЙ О СЛУЖАЩИХ - ПРИМЕР
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <fcntl.h>
4 #include <unistd.h>
5 #include <stdlib.h>
6 #include "employee.h"
7
8 main(int argc, char *argv[])
9 {
10 struct employee record;
11 int fd, flags;
12
13 if ((fd=open(argv[1], O_CREAT|O_RDWR|O_SYNC, 0600)) == -1) {
14 perror(argv[1]);
15 exit(1);
16 }
17 /*
18 * other data processing here
19 */
20 if ((flags = fcntl(fd, F_GETFL)) == -1) {
21 perror(argv[1]);
22 exit(2);
23 }
24 flags |= O_APPEND;
25 fcntl(fd, F_SETFL, flags);
26 for (;;) {
27 printf("\nEnter employee name: ");
28 scanf("%s", record.name);
29 if (record.name[0] == '.')
30 break;
31 printf("Enter employee salary: ");
32 scanf("%d", &record.salary);
33 write(fd, &record, sizeof(record));
34 }
35 close(fd);
36 }