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