使用execve()在UNIX中编写ls程序

时间:2012-03-29 06:03:02

标签: c unix exec argv ls

在较高的层次上,你如何使用execve()函数在UNIX中编写ls程序的副本?我正在练习熟悉exec()系列函数,命令行参数和环境变量。我不熟悉使用这些概念,但我知道他们做了什么。

1 个答案:

答案 0 :(得分:3)

以下代码可以执行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 .