社区
C语言
帖子详情
C中如何判断一个文件是链接文件?
forwxh
2010-10-18 04:25:14
C中如何判断一个文件是链接文件?
谢谢:
使用S_ISLNK是否可以?
...全文
1314
9
打赏
收藏
C中如何判断一个文件是链接文件?
C中如何判断一个文件是链接文件? 谢谢: 使用S_ISLNK是否可以?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
justkk
2010-10-19
打赏
举报
回复
你不能使用fstat来获取文件信息,这样获取的是链接的目标文件
像1楼说的,可以使用lstat获取链接文件本身的信息,然后再测试
forwxh
2010-10-19
打赏
举报
回复
int main(int argc, char **argv)
{
if(argc != 2)
return 1;
int file=0;
if((file=open(argv[1],O_RDONLY)) < -1)
return 1;
struct stat fileStat;
if(fstat(file,&fileStat) < 0)
return 1;
printf("Information for %s\n",argv[1]);
printf("---------------------------\n");
printf("File Size: \t\t%d bytes\n",fileStat.st_size);
printf("Number of Links: \t%d\n",fileStat.st_nlink);
printf("File inode: \t\t%d\n",fileStat.st_ino);
printf("File Permissions: \t");
printf( (S_ISDIR(fileStat.st_mode)) ? "d" : "-");
printf( (fileStat.st_mode & S_IRUSR) ? "r" : "-");
printf( (fileStat.st_mode & S_IWUSR) ? "w" : "-");
printf( (fileStat.st_mode & S_IXUSR) ? "x" : "-");
printf( (fileStat.st_mode & S_IRGRP) ? "r" : "-");
printf( (fileStat.st_mode & S_IWGRP) ? "w" : "-");
printf( (fileStat.st_mode & S_IXGRP) ? "x" : "-");
printf( (fileStat.st_mode & S_IROTH) ? "r" : "-");
printf( (fileStat.st_mode & S_IWOTH) ? "w" : "-");
printf( (fileStat.st_mode & S_IXOTH) ? "x" : "-");
printf("\n\n");
printf("The file %s a symbolic link\n\n", (S_ISLNK(fileStat.st_mode)) ? "is" : "is not");
return 0;
}
当测试一个链接文件123(指向/tmp/99999.txt)时,显示的是/tmp/99999.txt的属性,请指点下~~
sfd1234
2010-10-19
打赏
举报
回复
试了不行那就是不行嘛!
forwxh
2010-10-19
打赏
举报
回复
使用S_ISLNK时,当测试一个链接文件时,提示为不是链接文件:
struct stat filestat;
(s_link(filestat.st_mode))?"is":"is not"
yueyinggufan
2010-10-18
打赏
举报
回复
man fcntl
luciferisnotsatan
2010-10-18
打赏
举报
回复
lz你自己试下你的想法就可以了
justkk
2010-10-18
打赏
举报
回复
lz自己都想到了
why not try 一下..
小魔菇
2010-10-18
打赏
举报
回复
fstat- get file status
S_ISLNK(m) symbolic link?
try325
2010-10-18
打赏
举报
回复
1
是linux中的链接文件吗?
试试lstat()函数
c语言 测试
文件
存在,c语言 file如何
判断
文件
是否存在
c语言
中
如何
判断
文件
是否存在一般情况下,我们可以使用函数stat(), access() 和fopen()来检验
文件
是否存在,但是由于
文件
权限的问题,有时可能不像结果所言,可能不是因为
文件
不存在,而是没有打开的权限。函数fopen通常情况下使用fopen主要用于读写
文件
,而我们就可以在这个上面做文章,通过以只读r的模式打开,如果失败,就是
文件
不存在咯。1234567891011FILE *fp;f...
C语言 | 什么是动态
链接
与静态
链接
?
什么是
链接
? 对于初学C语言的朋友,可能对
链接
这个概念有点陌生,这里简单介绍一下。我们的C代码编译生成可执行程序会经过如下过程:
链接
就是把目标
文件
与一些库
文件
生成可执行
文件
的
一个
过程。关于更详细的编译过程,可查阅往期笔记:C语言的编译过程 静态、动态
链接
? 1、什么是静态
链接
? 静态
链接
是由
链接
器在
链接
时将库的内容加入到可执行程序
中
的做法。
链接
器是
一个
独立程序,将
一个
或多个库或目标
文件
(先前由...
c语言
文件
的编译和
链接
(上)
而这也就解释了如果我们在
一个
源
文件
里面声明了
一个
Sub函数,但是如果我们在实现这个函数的时候打错了名字打成了Sud那么在形成符号表的时候,总的符号表里面就会出现两个函数,
一个
名叫Sub它的地址为无效的,
一个
名叫Sud它的地址为有效的,但是在执行程序的时候经过符号表的对照,编译器会进入到那个无效的地址
中
去,因为主函数调用用的任然是Sub函数,所以最后出错。从图片可以看出确实生成了obj
文件
,当然我是在vs2022的编译环境下,如果是在gcc的环境下生成的目标
文件
后缀就是.0。那么这两种环境的功能是什么呢?
c语言
一个
项目只能有
一个
主函数,那另
一个
cpp
文件
怎么办,关于.cpp
文件
包含另
一个
.cpp
文件
出错的原因以及解决办法...
今天打开自己以前写代码突然觉得在main函数
中
如果要用的很多自己实现的函数,如果把它们都放在main.cpp
文件
中
太臃肿了。调试起来特别不方便。能不能把这些自己实现的函数放到另外
一个
文件
中
呢?可是又不能把这些函数放在.h
文件
中
。因为书上说.h
文件
中
最好只放结构体、类等的申明,函数实现最好放在.cpp
文件
中
。好吧那我就把这些函数放到
一个
.cpp
文件
中
吧。所以我就新建了
一个
2.cpp
文件
把自己实现的函...
【C语言】
文件
操作+编译和
链接
文件
是存放在硬盘上的数据,存放在外存
中
,需要使用时调入内存进行使用。我们分为数据
文件
和程序
文件
两类。
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章