1. ftruncate: 改变文件大小
头文件: #include<unistd.h>
函数定义: intftruncate(int fd , off_t length);
函数说明: ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。参数fd为已打开的文件描述词,而且必须是以写入模式打开的文件。如果原来的文件大小比参数length大,则超过的部分会被删去。
返回值 :执行成功则返回0,失败返回-1,错误原因存于errno。
错误:
EBADF 参数fd文件描述词为无效的或该文件已关闭。
EINVAL 参数fd 为一socket 并非文件,或是该文件并非以写入模式打开。
2. access: 判断是否有存取文件的权限
头文件: unistd.h
函数定义: int access(const char *pathname, int mode);
函数说明: access()检查是否可以读/写某一已存在的文件。 参数mode有几种情况组合, R_OK, W_OK, X_OK和F_OK. R_OK, W_OK与X_OK用来检查文件是否具有读取, 写入和执行的权限。 F_OK则是用来判断该文件是否存在。由于access()只作权限的核查,并不理会文件形态或文件内容,因此,如果一目录表示为"可写入", 表示可以在该目录中建立新文件等操作, 而非意味此目录可以被当做文件处理。若所有欲查核的权限都通过了检查则返回0值,,表示成功,只要有一权限被禁止则返回-1。
错误代码:
EACCESS 参数pathname所指定的文件不符合所要求测试的权限
EROFS 欲测试写入权限的文件存在于只读文件系统