[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Установка ограничения на размер файла - Пример

Эта программа показывает, как использовать системный вызов ulimit(2).
Она получает текущее ограничение на размер файла, а затем уменьшает
его. Это новое ограничение используется только во время исполнения
этой программы. При отладке программы, которая пишет в файл, иногда
нужна только первая запись в файл. Используя ulimit(2), этого можно
добиться без использования специальных операторов отладчика.
Первый аргумент этой программы - новое значение ограничения ulimit.
Остальные аргументы задают команду, которая будет исполняться с этим
новым значением ulimit. Эта программа работает следующим образом:
10-11     Получить и напечатать начальное значение ограничения.
13   Получить новое значение ограничения из первого аргумента
программы.
14   Установить новое ограничение.
15-16     Напечатать новое ограничение.
18-22     Создать порожденный процесс, который наследует родительское
ограничение. Подпроцесс исполняет программу, заданную аргументом
arg[2].
Эта программа демонстрируется следующим образом:
$ setulimit 2 cat /etc/passwd >passwd
Maximum file size: 4096
New maximum file size: 2
cat: output error
$ wc passwd
     19     20   1024 passwd

Вывод cat(1) ограничен двумя блоками или 1024 байтов.
Файл: setulimit.c
            УСТАНОВКА ОГРАНИЧЕНИЯ НА РАЗМЕР ФАЙЛА - ПРИМЕР

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 #include <unistd.h>
 4 #include <ulimit.h>
 5
 6 main(int argc, char *argv[])
 7 {
 8     long newlimit;
 9
10     fprintf(stderr, "Maximum file size: %ld\n",
11                 ulimit(UL_GETFSIZE));
12
13     newlimit = atol(argv[1]);
14         ulimit(UL_SETFSIZE, newlimit);
15     fprintf(stderr, "New maximum file size: %ld\n",
16                 ulimit(UL_GETFSIZE));
17
18     if (fork() == 0) {
19                 execvp(argv[2], &argv[2]);
20         perror(argv[2]);
21         exit(127);
22     }
23 }