From 1f659941fd05daba668c242a3ee3c5e6c83665d5 Mon Sep 17 00:00:00 2001 From: Ether <33268383+FAETHER@users.noreply.github.com> Date: Tue, 20 Oct 2020 21:44:20 +0000 Subject: [PATCH] Fix EMFILE Close the directory, errno EMFILE should not be reached. --- src/fastcd-server.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/fastcd-server.c b/src/fastcd-server.c index 8fedfa5..8640e63 100644 --- a/src/fastcd-server.c +++ b/src/fastcd-server.c @@ -1,6 +1,6 @@ /** * @author lizhonghua@360.cn - * @desc 提供网络服务,接收目录查询请求 + * @desc 鎻愪緵缃戠粶鏈嶅姟锛屾帴鏀剁洰褰曟煡璇㈣姹 */ #include @@ -32,11 +32,11 @@ list_node *fail_dir; extern int sum_dir; -#define MODEL_ALL 1 //搜索全部目录 -#define MODEL_PWD 2 //搜索当前目录以下的目录 -#define MODEL_SMART 3 //先搜索当前目录以下目录,结果为空再搜索全部目录 +#define MODEL_ALL 1 //鎼滅储鍏ㄩ儴鐩綍 +#define MODEL_PWD 2 //鎼滅储褰撳墠鐩綍浠ヤ笅鐨勭洰褰 +#define MODEL_SMART 3 //鍏堟悳绱㈠綋鍓嶇洰褰曚互涓嬬洰褰曪紝缁撴灉涓虹┖鍐嶆悳绱㈠叏閮ㄧ洰褰 -static int search_model = MODEL_SMART; //搜索模式 +static int search_model = MODEL_SMART; //鎼滅储妯″紡 int traverse_dir() { @@ -104,6 +104,11 @@ int traverse_dir() { printf("%s\n", cur_dir); } + if (closedir(tdp) < 0) + { + fprintf(stderr, "close %s fail\n", cur_dir); + return 0; + } traverse_dir(); } @@ -180,7 +185,7 @@ int search_pre(char *input, char *output) int i; init_data_store(); - if (param->cmd == CMD_QUERY)//目前只支持查询 + if (param->cmd == CMD_QUERY)//鐩墠鍙敮鎸佹煡璇 { if (strlen(param->dirpre) <= 0 || strlen(param->pwddir) <= 0)