на главную | войти | регистрация | DMCA | контакты | справка | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


моя полка | жанры | рекомендуем | рейтинг книг | рейтинг авторов | впечатления | новое | форум | сборники | читалки | авторам | добавить



Листинг 4.17. Определение значений PIPE_BUF и OPEN_MAX во время выполнения

//pipe/pipeconf.c

1  #include "unpipc.h"

2  int

3  main(int argc, char **argv)

4  {

5   if (argc != 2)

6   err_quit("usage: pipeconf ");

7   printf("PIPE_BUF = %ld. OPEN_MAX = %ld\n",

8   Pathconf(argv[1], _PC_PIPE_BUF), Sysconf(_SC_OPEN_MAX));

9   exit(0);

10 }

Вот несколько примеров, в которых указываются имена файлов, относящиеся к различным файловым системам:

solaris % pipeconf / значения по умолчанию в Solaris 2.6

PIPE_BUF = 5120, OPEN_MAX = 64

solaris % pipeconf /home

PIPE_BUF = 5120, OPEN_MAX = 64

solaris % pipeconf /tmp

PIPE_BUF = 5120, OPEN_MAX = 64

alpha % pipeconf /   значения по умолчанию в Digital Unix 4.0B

PIPE_BUF = 4096, OPEN_MAX = 4096

alpha % pipeconf /usr

PIPE_BUF = 4096, OPEN_MAX = 4096

Покажем теперь, как изменить значение OPEN_MAX в Solaris, используя интерпретатор KornShell:

solaris % ulimit –nS     отображение максимального количества дескрипторов, мягкоео граничение

64

solaris % ulimit –Nh     отображение максимального количества дескрипторов, жесткое ограничение

1024

solaris % ulimit –nS 512 установка мягкого ограничения в 512

solaris % pipeconf /     проверка внесенных изменений

PIPE_BUF = 5120, OPEN_MAX = 512 

ПРИМЕЧАНИЕ

Хотя значение PIPE_BUF для FIFO, в принципе, может меняться в зависимости от файловой системы, к которой относится файл, на самом деле это очень редкий случай.

В главе 2 [21] описаны функции fpathconf, pathconf и sysconf, которые предоставляют информацию о некоторых ограничениях ядра во время выполнения программы. Стандарт Posix.1 определяет 12 констант, начинающихся с _РС_, и 52, начинающихся с _SC_. Системы Digital Unix 4.0B и Solaris 2.6 расширяют последнее ограничение, определяя около 100 констант, значения которых могут быть получены в момент выполнения программы с помощью sysconf. 

Команда getconf определяется стандартом Posix.2 и выводит значения большинства этих ограничений. Например:

alpha % getconf OPEN_MAX

4096

alpha % getconf PIPE_BUF /

4096


4.11. Ограничения программных каналов и FIFO | UNIX: взаимодействие процессов | 4.12. Резюме