使用c程序我需要找到并删除目录中缺少目标的所有符号链接。
检查符号链接的目标是否存在的最有效方法是什么。除打开符号链接以外的任何方法并检查返回值。我正在使用linux和gcc。
答案 0 :(得分:1)
设置了access ()
模式的F_OK
功能将遵循符号链接路径。
以下代码将打印"是!"如果符号链接和目标文件都存在...
#include <stdio.h>
#include <unistd.h>
int
main (void)
{
if (access ("test.txt", F_OK) != -1) {
puts ("Yes!");
return 0;
}
puts ("No.");
return 1;
}
答案 1 :(得分:1)
答案 2 :(得分:1)
来自man 3 stat
手册页
如果指定的文件是符号链接,则stat()函数应使用。继续路径名解析 符号链接的内容,如果是,则返回与结果文件有关的信息 文件存在。
所以以下工作很好:
#include <sys/stat.h>
#include <stdio.h>
int main() {
struct stat ctx;
int status = stat("test.txt", &ctx);
if(status != 0) {
perror("[stat]");
return 1;
}
else {
puts("works nice");
}
return 0;
}