我一直在研究UNIX,书上有示例代码,
但这段代码似乎不起作用。当我编译代码时,返回段错误。
#include<dirent.h>
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int my_double_ls(const char *name)
{
struct dirent *d;
DIR *dp;
if ((dp=opendir(name)) == NULL)
return (-1);
while (d=readdir(dp)) {
if (d->d_ino != 0)
printf("%s\n", d->d_name);
}
rewinddir(dp);
while (d = readdir(dp)) {
if (d->d_ino != 0)
printf("%s\n", d->d_name);
}
closedir(dp);
return(0);
}
int main(int argc, char **argv){
my_double_ls(argv[1]);
return(0);
}
最佳答案
您可能在没有命令行参数的情况下调用了该程序:
试试这个:
...
int main(int argc, char **argv){
if (argc < 2)
{
printf("You need to specify the directory.\n");
exit(1);
}
my_double_ls(argv[1]);
return 0;
}
my_double_ls
函数在我看来或多或少是正确的。
关于c - 在 UNIX 上打印目录代码出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53263940/