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);
}