不能在if执行命令

时间:2018-02-24 16:52:45

标签: c

我的程序有问题。当我调试它时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);
}

enter image description here

2 个答案:

答案 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返回的值,您可以使用readwrite等函数随后访问您的文件

它可以是任何整数值,-1除外,它用于告诉您打开文件时出错。

fd<0但不是-1就好了。