[<<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 }