2011-03-22 67 views
4

有什么方法可以使用C程序找出文件的父目录。我想为该目录所具有的文件赋予相同的权限。为此,我想知道文件的父目录。任何帮助表示赞赏。文件的父目录

+1

从字符串?从文件描述符? – 2011-03-22 14:25:35

+2

一个文件可以有一个以上的父目录:请参阅Linux中的'man ln',联结点或Windows中的任何内容('mklink /?'适用于我的Windows Vista) – pmg 2011-03-22 14:29:43

+0

如果您不授予它任何权限,它将继承那些目录。 – 2011-03-22 14:31:32

回答

3

如果你有文件的路径,你可以手动使其成为绝对路径做,如果它是相对的(不以/在Unix或letter:\\letter://在Windows开始),然后将其拆分为文件分隔符(/\),但我知道没有内置函数可以为您执行所有这些操作。

basename and dirname函数可能会有所帮助,但是您需要自己弄清楚文件的路径,因为它们只能用于字符串;他们不询问文件系统。

+0

dirname手册页:http://linux.die.net/man/3/dirname – Daniel 2014-03-13 09:20:56

1

它不能保证做正确的事情,但你有没有尝试过的以下内容:

  • 如果你的文件名包含路径分隔符(如在Unix /\在Windows上),复制使用例如字符串strdup()并用零/空字符替换路径分隔符的最后一次出现(用例如strrchr()找到)。生成的字符串将是您文件的父目录。

  • 如果没有路径分隔符,则文件驻留在当前的工作目录中。您是否尝试过使用....链接可以在Unix和Windows上运行。

有相当多的极端案例以上(例如什么文件/hello.txt的?),但它应该是一个开始。