zoukankan      html  css  js  c++  java
  • open()打开文件失败对应的各种错误码

    open()打开文件失败错误码:

    获取错误信息实例:

        HANDLE hFile = 0;
        hFile = open(“c:	est.txt”, O_RDWR, S_IRWXU|S_IRWXG|S_IRWXO);
            if (-1 == hFile)
            {
                
                printf("Error %d: Failed to open file
    ", errno);
    
                
                
                if (errno == EEXIST )
                {
                   printf("EEXIST 参数pathname 所指的文件已存在, 却使用了O_CREAT 和O_EXCL 旗标. 
    ");
                   
                }else if(errno == EACCES)
                {
                     printf("EACCESS 参数pathname 所指的文件不符合所要求测试的权限.
    ");
                      
                }else if(errno == EROFS)
                {
                     printf("EROFS 欲测试写入权限的文件存在于只读文件系统内.
    ");
                }else ......
        
                
                
                
            }
            

    注:使用errno 需要加上头文件:

    #include <errno.h> 

    #define    EPERM         1        /* Operation not permitted */
    #define    ENOENT         2        /* No such file or directory */
    #define    ESRCH          3        /* No such process */
    #define    EINTR          4        /* Interrupted system call */
    #define    EIO            5        /* Input/output error */
    #define    ENXIO          6        /* Device not configured */
    #define    E2BIG          7        /* Argument list too long */
    #define    ENOEXEC        8        /* Exec format error */
    #define    EBADF          9        /* Bad file descriptor */
    #define    ECHILD         10        /* No child processes */
    #define    EDEADLK        11        /* Resource deadlock avoided */
                        /* 11 was EAGAIN */
    #define    ENOMEM         12        /* Cannot allocate memory */
    #define    EACCES         13        /* Permission denied */
    #define    EFAULT         14        /* Bad address */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    ENOTBLK        15        /* Block device required */
    #endif
    #define    EBUSY          16        /* Device / Resource busy */
    #define    EEXIST         17        /* File exists */
    #define    EXDEV          18        /* Cross-device link */
    #define    ENODEV         19        /* Operation not supported by device */
    #define    ENOTDIR        20        /* Not a directory */
    #define    EISDIR         21        /* Is a directory */
    #define    EINVAL         22        /* Invalid argument */
    #define    ENFILE         23        /* Too many open files in system */
    #define    EMFILE         24        /* Too many open files */
    #define    ENOTTY         25        /* Inappropriate ioctl for device */
    #define    ETXTBSY        26        /* Text file busy */
    #define    EFBIG          27        /* File too large */
    #define    ENOSPC         28        /* No space left on device */
    #define    ESPIPE         29        /* Illegal seek */
    #define    EROFS          30        /* Read-only file system */
    #define    EMLINK         31        /* Too many links */
    #define    EPIPE          32        /* Broken pipe */
    
    /* math software */
    #define    EDOM           33        /* Numerical argument out of domain */
    #define    ERANGE         34        /* Result too large */
    
    /* non-blocking and interrupt i/o */
    #define    EAGAIN         35        /* Resource temporarily unavailable */
    #define    EWOULDBLOCK    EAGAIN        /* Operation would block */
    #define    EINPROGRESS    36        /* Operation now in progress */
    #define    EALREADY       37        /* Operation already in progress */
    
    /* ipc/network software -- argument errors */
    #define    ENOTSOCK       38        /* Socket operation on non-socket */
    #define    EDESTADDRREQ   39        /* Destination address required */
    #define    EMSGSIZE       40        /* Message too long */
    #define    EPROTOTYPE     41        /* Protocol wrong type for socket */
    #define    ENOPROTOOPT    42        /* Protocol not available */
    #define    EPROTONOSUPPORT   43        /* Protocol not supported */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    ESOCKTNOSUPPORT   44        /* Socket type not supported */
    #endif
    #define ENOTSUP              45        /* Operation not supported */


    #define    EPFNOSUPPORT      46        /* Protocol family not supported */
    #endif
    #define    EAFNOSUPPORT      47        /* Address family not supported by protocol family */
    #define    EADDRINUSE        48        /* Address already in use */
    #define    EADDRNOTAVAIL     49        /* Can't assign requested address */
    
    /* ipc/network software -- operational errors */
    #define    ENETDOWN          50        /* Network is down */
    #define    ENETUNREACH       51        /* Network is unreachable */
    #define    ENETRESET         52        /* Network dropped connection on reset */
    #define    ECONNABORTED      53        /* Software caused connection abort */
    #define    ECONNRESET        54        /* Connection reset by peer */
    #define    ENOBUFS           55        /* No buffer space available */
    #define    EISCONN           56        /* Socket is already connected */
    #define    ENOTCONN          57        /* Socket is not connected */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    ESHUTDOWN         58        /* Can't send after socket shutdown */
    #define    ETOOMANYREFS      59        /* Too many references: can't splice */
    #endif
    #define    ETIMEDOUT         60        /* Operation timed out */
    #define    ECONNREFUSED      61        /* Connection refused */
    
    #define    ELOOP             62        /* Too many levels of symbolic links */
    #define    ENAMETOOLONG      63        /* File name too long */
    
    /* should be rearranged */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    EHOSTDOWN         64        /* Host is down */
    #endif
    #define    EHOSTUNREACH      65        /* No route to host */
    #define    ENOTEMPTY         66        /* Directory not empty */
    
    /* quotas & mush */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    EPROCLIM          67        /* Too many processes */
    #define    EUSERS            68        /* Too many users */
    #endif
    #define    EDQUOT            69        /* Disc quota exceeded */
    
    /* Network File System */
    #define    ESTALE            70        /* Stale NFS file handle */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    EREMOTE           71        /* Too many levels of remote in path */
    #define    EBADRPC           72        /* RPC struct is bad */
    #define    ERPCMISMATCH      73        /* RPC version wrong */
    #define    EPROGUNAVAIL      74        /* RPC prog. not avail */
    #define    EPROGMISMATCH     75        /* Program version wrong */
    #define    EPROCUNAVAIL      76        /* Bad procedure for program */
    #endif
    
    #define    ENOLCK            77        /* No locks available */
    #define    ENOSYS            78        /* Function not implemented */
    
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    EFTYPE            79        /* Inappropriate file type or format */
    #define    EAUTH             80        /* Authentication error */
    #define    ENEEDAUTH         81        /* Need authenticator */
    
    /* Intelligent device errors */
    #define    EPWROFF           82    /* Device power is off */
    #define    EDEVERR           83    /* Device error, e.g. paper out */
    #endif
    
    #define    EOVERFLOW         84        /* Value too large to be stored in data type */
    
    /* Program loading errors */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define EBADEXEC             85    /* Bad executable */
    #define EBADARCH             86    /* Bad CPU type in executable */
    #define ESHLIBVERS           87    /* Shared library version mismatch */
    #define EBADMACHO            88    /* Malformed Macho file */
    #endif
    
    #define    ECANCELED         89        /* Operation canceled */
    
    #define EIDRM                90        /* Identifier removed */
    #define ENOMSG               91        /* No message of desired type */   
    #define EILSEQ               92        /* Illegal byte sequence */
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define ENOATTR              93        /* Attribute not found */
    #endif
    
    #define EBADMSG              94        /* Bad message */
    #define EMULTIHOP            95        /* Reserved */
    #define    ENODATA           96        /* No message available on STREAM */
    #define ENOLINK              97        /* Reserved */
    #define ENOSR                98        /* No STREAM resources */
    #define ENOSTR               99        /* Not a STREAM */
    #define    EPROTO            100        /* Protocol error */
    #define ETIME                101        /* STREAM ioctl timeout */
    
    #if __DARWIN_UNIX03 || defined(KERNEL)
    /* This value is only discrete when compiling __DARWIN_UNIX03, or KERNEL */
    #define    EOPNOTSUPP        102        /* Operation not supported on socket */
    #endif /* __DARWIN_UNIX03 || KERNEL */
    
    #define ENOPOLICY            103        /* No such policy registered */
    
    #if __DARWIN_C_LEVEL >= 200809L
    #define ENOTRECOVERABLE      104        /* State not recoverable */
    #define EOWNERDEAD           105        /* Previous owner died */
    #endif
    
    #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
    #define    EQFULL            106        /* Interface output queue is full */
    #define    ELAST             106        /* Must be equal largest errno */
  • 相关阅读:
    RHEL7基本命令
    RHEL7VIM编辑器
    hello world
    配置mysql允许远程连接
    c#利用HttpWebRequest获取网页源代码
    C++局部变量详解(笔试题)
    c语言文件常用的操作
    Cocos2dx v3.1 初识(一)
    创建钩子(Hook)
    Extjs4.2.0 Form 的使用
  • 原文地址:https://www.cnblogs.com/wainiwann/p/3340277.html
Copyright © 2011-2022 走看看