Программирование в стандарте POSIX

int uname


#include <sys/utsname.h> int uname (struct utsname *name);
Листинг 10.1. Описание функции uname
Закрыть окно




Linux t94 2.4.18-3 #1 Thu Apr 18 07:37: 53 EDT 2002 i686 unknown
Листинг 10.2. Возможный результат выполнения команды uname -a.
Закрыть окно




#include <unistd.h> int gethostname (char *name, size_t namelen);
Листинг 10.3. Описание функции gethostname().
Закрыть окно






#if _POSIX_VERSION >= 200112L /* Используем новую функцию, применимую к */ /* большим файлам */ off_t fpos = ftello (fp); #else /* Либо реализация поддерживает только */ /* старую версию стандарта POSIX, либо */ /* константа _POSIX_VERSION вообще не */ /* определена. */ /* Используем старую, традиционную функцию */ /* опроса текущей позиции в файле */ long fpos = ftell (fp); #endif
Листинг 10.4. Пример условной компиляции с использованием конфигурационной константы _POSIX_VERSION.
Закрыть окно




#include <unistd.h> long sysconf (int name); size_t confstr ( int name, char *buf, size_t len); long fpathconf (int fildes, int name); long pathconf (const char *path, int name);
Листинг 10.5. Описание функций sysconf(), confstr(), fpathconf() и pathconf().
Закрыть окно




if unm=$(getconf "$@"); then if [ "$unm" = "undefined" ]; then echo Значение "$@" не определено else echo Значение "$@" равно $unm. fi else echo Ошибка при выполнении getconf fi
Листинг 10.6. Пример аккуратной обработки результатов утилиты getconf.
Закрыть окно




#include <unistd.h> #include <stdio.h> #include <stdlib.h> int main (void) { size_t buf_len; char *buf; if ((buf_len = confstr (_CS_PATH, (char *) NULL, (size_t) 0)) > 0) { if ((buf = (char *) malloc (buf_len)) != NULL) { (void) confstr (_CS_PATH, buf, buf_len); printf ("Standard PATH: %s\n", buf); } } return 0; }
Листинг 10.7. Пример аккуратного опроса конфигурационной цепочки символов.
Закрыть окно



Содержание раздела