C重命名函数语法问题

问题描述 投票:1回答:1

使用重命名时,会使用完整的目录名吗?我似乎无法让这个例子起作用,尽管所有的迹象都表明它应该。谁知道为什么?例;

original file location is: /home1/s/j/jb986132/402project4/402project4TEST/checkDirectory.c
final destination of file is:  /home1/s/j/jb986132/402project4/402project4TEST/c/checkDirectory.c
filename is:  checkDirectory.c
destinationName is:  /c/checkDirectory.c
active is:  /home1/s/j/jb986132/402project4/402project4TEST

我可以把它写成:

rename(original file location, final destination)
c
1个回答
0
投票

实际上,标准本身对函数的允许参数几乎没什么可说的,它简单地说明:

rename函数导致名称为old指向的字符串的文件因此由new指向的字符串给出的名称所知。该名称不再可以访问名为old的文件。如果在调用new函数之前存在由rename指向的字符串命名的文件,则该行为是实现定义的。

如果操作成功,则rename函数返回零,如果失败则返回非零值,在这种情况下,如果文件先前存在,则其原始名称仍然是已知的。

实现可能导致重命名功能失败的原因之一是文件是打开的,或者有必要复制其内容以实现其重命名。

我突出显示了最后一段中的片段,因为它意味着任何其他原因可能导致失败,例如尝试更改目录,或者试图在蓝月亮的晚上6点之后调用它:-)

如果子目录位于同一个物理文件系统上,您会认为,至少类UNIX操作系统不会出现问题,因为它很可能是一个简单的inode移动。

但是,C标准似乎没有预先假定底层文件系统。

© www.soinside.com 2019 - 2024. All rights reserved.