我的程序有问题。当我调试它时fd2 is < 0
并没有得到它,如果。看看吧。
printf("Enter file name: ");
scanf(" %s", file_name);
printf("Enter file name2: ");
scanf(" %s", file_name2);
fd=open(file_name, O_RDWR, S_IRWXU);
fd2=open(file_name2, O_RDWR, S_IRWXU);
if(fd2<0){
printf("Error opening file!\n%s\n", strerror(errno));
return(-1);
}
if(fd<0){
printf("Error opening file!\n%s\n", strerror(errno));
return(-1);
}
答案 0 :(得分:0)
工作正常。正确检查open()
的返回值,如果open()
失败则表示权限问题。
fd=open(file_name, O_RDWR, S_IRWXU);
fd
是一个文件描述符,您可以使用
ls -l /proc/pid/fd
ls -l /proc/pid/fd /* check here what value its prints */
和
#include<errno.h>
int main() {
char file_name[50],file_name2[50];
printf("Enter file name: ");
scanf(" %s", file_name);
int fd,fd2;
printf("Enter file name2: ");
scanf(" %s", file_name2);
fd=open(file_name, O_RDWR, S_IRWXU);
if(fd < 0) {
printf("Error opening file!\n%d\n", strerror(errno));/* use %d instead of %s */
return 0; /* upon failure open() returns 0 not -1 */
}
fd2=open(file_name2, O_RDWR, S_IRWXU);
if(fd2 < 0) {
printf("Error opening file!\n%d\n", strerror(errno));
return 0;
}
}
答案 1 :(得分:-1)
fd
,意为“文件描述符”,是open
返回的值,您可以使用read
和write
等函数随后访问您的文件
它可以是任何整数值,-1
除外,它用于告诉您打开文件时出错。
fd<0
但不是-1
就好了。