【发布时间】:2014-08-09 00:40:00
【问题描述】:
我正在尝试使用 open() 在 c 中打开一个文件,我需要检查该文件是否为常规文件(它不能是目录或块文件)。每次我运行 open() 时,我返回的文件描述符都是 3 - 即使我没有输入有效的文件名!
这就是我所拥有的
/*
* Checks to see if the given filename is
* a valid file
*/
int isValidFile(char *filename) {
// We assume argv[1] is a filename to open
int fd;
fd = open(filename,O_RDWR|O_CREAT,0644);
printf("fd = %d\n", fd);
/* fopen returns 0, the NULL pointer, on failure */
}
谁能告诉我如何验证输入文件? 谢谢!
【问题讨论】:
-
我不认为看 fd 会解决问题,它只是 RAM 中存储文件的点...如果它不为空,则表示文件可以打开。
-
那么如何检查文件是否为普通文件?
-
如果文件不存在,您告诉它创建文件 (
O_CREAT)。
标签: c file system-calls