C言語システムコール-getdtablesize

getdtablesizeシステムコール

概要

getdtablesizeはプロセスがオープンできる最大ファイル数を取得します。

オープンできる最大ファイル数とは、取得可能であるファイルディスクリプタの数のことです。


LinuxではCライブラリ関数として実装されています。

なお、getrlimitシステムコールのRLIMIT_NOFILE指定でも同様の情報を取得できます。


サンプルプログラム


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>

/*!
 * @brief     最大ファイルディスクリプタ数を取得する
 * @return    0:success/-1:failure
 */
static int
max_filedescriptor(void)
{
    int rc = 0;

    rc = getdtablesize();
    if(rc < 0){
        printf("Error: getdtablesize() %s\n", strerror(errno));
        return(-1);
    }

    printf("max descriptor = %d\n", rc);

    return(0);
}

int
main(int argc, char *argv[])
{
    int rc = 0;

    if(argc != 1){
        fprintf(stderr, "Usage: %s\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    rc = max_filedescriptor();
    if(rc != 0) exit(EXIT_FAILURE);

    exit(EXIT_SUCCESS);
}


関連ページ