gpt4 book ai didi

c - lstat 返回 <0

转载 作者:行者123 更新时间:2023-11-30 15:07:42 28 4
gpt4 key购买 nike

基本上,这应该是一段简单的代码,用于打开目录流并查找符号链接(symbolic link)。每当找到符号链接(symbolic link)时,就应该打印(“找到符号链接(symbolic link)”);但是,lstat(dirp->d_name,&buf调用总是返回一个值< 0,我不知道为什么。我创建了两个符号链接(symbolic link),打开文件夹,打开文件夹内的终端窗口并运行ln -s ciao.txt link1ln -s ciao2.txt link2我知道我应该稍后在代码中调用 linedir(),请不要关心这个。

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>

void main (int argc, char* argv[])
{
char buffer[100],dir[100];
struct stat buf;
int x;
DIR *dp;
struct dirent *dirp;
if((dp=opendir(argv[1]))==NULL)
{
printf("\nError opening directory stream, now exiting...\n");
exit(-1);
}
while((dirp=readdir(dp))!=NULL)
{
lstat(dirp->d_name,&buf);
if(S_ISLNK(buf.st_mode))
printf("\n%s Is a symbolic link\n",dirp->d_name);
else
printf("\n%s Is not a symbolic link\n",dirp->d_name);



}


}

一些帮助将不胜感激。谢谢。

最佳答案

d_name 是目录中的文件名,而不是完整路径名。您必须将chdir放入您正在查看的目录中,或者构建文件的完整路径名。

最简单的解决方案是在 while 循环之前添加此行:

chdir(argv[1]);

关于c - lstat 返回 <0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38029619/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com