Использование execve () для написания программы ls в UNIX - PullRequest
1 голос
/ 29 марта 2012

На высоком уровне, как бы вы использовали функцию execve () для написания дубликата программы ls в UNIX?Я делаю упражнение, чтобы ознакомиться с семейством функций exec (), аргументами командной строки и переменными среды.Я не знаком с этими понятиями, но знаю, что они делают.

1 Ответ

3 голосов
/ 29 марта 2012

Приведенный ниже код может выполнять команду ls.Вы имеете в виду это?

#include <stdio.h>

int main(void)
{
        system("ls");
        return 0;
}

И я написал для вас простое демо ls.

my_ls.c

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

int main(int argc, char *argv[])
{
        if (argc != 2) {
                return 0;
        }

        DIR *dir = opendir(argv[1]);
        if (dir) {
                struct dirent *s_dir;
                while((s_dir = readdir(dir))) {
                        printf("%s ", s_dir->d_name);
                }
                printf("\n");
        }

        return 0;
}

Использование:

gcc my_ls.c -o my_ls
./my_ls .
...