可能重复:
C check if file exists
我只是想知道是否有人可以指出我应该如何检查文件是否存在?在这个时间点,我计划采取以下方面的措施;
if(NULL==(fp=fopen(filepath, "r"))){
我的最终目标是找到一个解决方案,用bash替换它(只是文件查找部分)
if ! (find /dev/shm/request-summon-*-$MCEXEC_PLAYERNAME.txt > /dev/null 2>&1); then
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
请查看涵盖stat()
和lstat()
的{{1}}手册页。如果您获得-1作为返回值,则您尝试获取摘要信息的文件不存在,或者可能无权读取它(请参阅下面的最后一个示例,其中显示了与fstat()
测试的区别文件可能存在但不允许你打开它。)
fopen()
答案 1 :(得分:0)
使用stat()或lstat()。我个人更喜欢使用lstat(),因为它告诉你目录条目是否是一个符号链接,而不是跟随链接。
为了您的最终目标,遍历目录树。你可以用opendir()和readdir()来完成这个。
答案 2 :(得分:0)
在POSIX系统上,您可以尝试打开文件并检查errno == ENOENT
是否失败(返回NULL
):
if ((fp = fopen(path, "r")) == NULL)
if (errno == ENOENT)
// file doesn't exist
没有纯粹的ISO C方式。
也可以使用stat
或lstat
,但在stat
和文件打开之间创建文件时,可能会导致race condition。< / p>