一、sysconf、pathconf和fpathconf函数
#include
long sysconf(int name);
long pathconf(const char *pathname, int name);
long fpathconf(int filedes, int name);
返回值:若成功返回相应值,如果出错,则返回-1
|
这三个函数返回值的进一步说明:
(1)如果name不是系统支持的常量,则这三个函数都会返回-1,并将errno设置为EINVAL。
(2)有些name可以返回变量的值(返回值>=0),或者返回-1,这表示该值是不确定的,此时并不改变errno的值。
二、示例代码
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h>
#ifdef OPEN_MAX static long openmax = OPEN_MAX #else static long openmax = -1; #endif
#define OPEN_MAX_GUESS 256
long open_max(void) { errno = 0; if ((openmax = sysconf(_SC_OPEN_MAX)) < 0) { if (errno == 0) openmax = OPEN_MAX_GUESS; else
fprintf(stderr, "sysconf for _SC_OPEN_MAX error: %m\n"); } return openmax; }
int main(int argc, char *argv[]) { printf("openmax = %ld\n", open_max()); exit(0); }
|
参考: APUE2程序清单2-4
阅读(1128) | 评论(0) | 转发(0) |