第十一章

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

results matching ""

    No results matching ""