第十一章
11-1 实现程序清单11-1的程序
在deepin上运行该程序和课本中输出一致。
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
static void _sysconfPrint(const char *msg, int name){
long lim;
errno = 0;
lim = sysconf(name);
if(lim != -1){
printf("%s %ld\n", msg, lim);
}
else{
if(errno == 0)
printf("%s (indeterminate)\n", msg);
else
perror(msg);
}
}
#define sysconfPrint(x) _sysconfPrint(#x "\t\t",x)
int main(){
sysconfPrint(_SC_ARG_MAX);
sysconfPrint(_SC_LOGIN_NAME_MAX);
sysconfPrint(_SC_OPEN_MAX);
sysconfPrint(_SC_NGROUPS_MAX);
sysconfPrint(_SC_PAGE_SIZE);
sysconfPrint(_SC_RTSIG_MAX);
return 0;
}
结果如下
_SC_ARG_MAX 2097152
_SC_LOGIN_NAME_MAX 256
_SC_OPEN_MAX 1024
_SC_NGROUPS_MAX 65536
_SC_PAGE_SIZE 4096
_SC_RTSIG_MAX 32
11-2 尝试在其他文件系统中运行程序清单11-2所列程序
在deepin上编译运行下面程序,结果与课本上一致。
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
static void _fpathconfPrint(const char *msg, int fd, int name){
long lim;
errno = 0;
lim = fpathconf(fd, name);
if(lim != -1){
printf("%s %ld\n", msg, lim);
}
else{
if(errno == 0)
printf("%s (indeterminate)\n", msg);
else
perror("msg");
}
}
#define fpathconfPrint(x) _fpathconfPrint(#x, STDIN_FILENO, x)
int main(){
fpathconfPrint(_PC_NAME_MAX);
fpathconfPrint(_PC_PATH_MAX);
fpathconfPrint(_PC_PIPE_BUF);
return 0;
}
结果如下:
_PC_NAME_MAX 255
_PC_PATH_MAX 4096
_PC_PIPE_BUF 4096