Как использовать подстановочные знаки в execv без системы или bash (в c )?

Нижеприведенная команда выдаст вам требуемое наиболее часто повторяющееся слово вместе со счетчиком.

cut -d ' ' -f1 file.txt | sort | uniq -c | head -1
0
15.04.2021, 17:28
1 ответ

Что ж, glob()кажется достаточно простым в использовании. Конечно, вы можете сделать это вручную, например. readdir()и fnmatch().

#include <glob.h>
#include <stdio.h>

/* run as 'globtest "*.txt"' */

int main(int argc, char *argv[])
{
    glob_t g;
    if (argc < 2) {
        printf("usage: %s <pattern>\n", argv[0]);
        return 1;
    }
    int ret = glob(argv[1], 0, NULL, &g);
    if (ret == 0) {
        printf("found %d matches:\n", (int) g.gl_pathc);
        for (int i = 0; g.gl_pathv[i]; i++) {
            printf("  %s\n", g.gl_pathv[i]); 
        }
    } else if (ret == GLOB_NOMATCH) {
        printf("no matches!\n");
    } else {
        printf("some error happened\n");
    }
}

Конечно, вам все равно нужно скопировать указатели (на строки )в массив, переданный в execv()/ execve().

2
28.04.2021, 22:52

Теги

Похожие вопросы