Boost :: filesystem :: is_symlink()不起作用

时间:2014-07-23 12:58:39

标签: c++ boost symlink boost-filesystem

当我启动这段代码时,它说每个文件都是常规的,甚至是符号链接:

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。

2 个答案:

答案 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)。