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