当我启动这段代码时,它说每个文件都是常规的,甚至是符号链接:
cout<<boost::filesystem::is_symlink(boost::filesystem::status("link-name"))<<endl;
任何人都知道为什么? (编译期间没有警告也没有错误) 该链接是使用以下命令创建的:
ln -s file-name link-name
和ls命令说这是一个链接:
ls -l link-name
lrwxrwxrwx 1 myname mygroup 8 juil. 23 14:12 link-name -> file-name
谢谢!
编辑:另一方面,函数boost :: filesystem :: is_regular_file总是返回true。
答案 0 :(得分:2)
在您拥有link_name
的代码中,您拥有link-name
的文件系统。
答案 1 :(得分:2)
您应该使用boost reference documentation中的symlink_status(const path& p)
。
file_status symlink_status(const path& p);
返回:与status()相同,但属性除外 表示符号链接,就像通过ISO / IEC 9945 S_ISLNK()一样,返回 file_status(symlink_file)。