Может быть, этот код может вам помочь:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char cmd[1024];
char *folder = "/tmp";
int status, exitcode;
if(argc == 2)
folder = argv[1];
snprintf(cmd, 1024, "test $(ls -A \"%s\" 2>/dev/null | wc -l) -ne 0", folder);
printf("executing: %s\n", cmd);
status = system(cmd);
exitcode = WEXITSTATUS(status);
printf ("exit code: %d, exit status: %d\n", exitcode, status);
if (exitcode == 1)
printf("the folder is empty\n");
else
printf("the folder is non empty\n");
return 0;
}
Я проверяю, является ли папка пустой, используя ls -A folder 2> / dev / null |wc -l, чтобы посчитать файлы в папке, если она возвращает ноль, папка пуста, иначе папка не пуста.Макрос WEXITSTATUS возвращает код завершения выполненной команды.
Примечание: если папка не существует или у вас нет необходимых прав доступа к ней, эта программа должна напечатать «папкапустой».