- 浏览: 302124 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
ggwang:
谢谢分享!
如何释放Ubuntu多余的空间?如何给Ubuntu扩容(install inside windows)? -
allenshao:
只有放枪咯~~~~~
Google Group Android Developers 无法打开的问题 -
malong26:
也打不开~~~
Google Group Android Developers 无法打开的问题 -
songshuang:
一直喂它会一直吃是不?
用你的鼠标逗逗它 -
allenshao:
现在基本上用免费的VPN,缺点是限流量。
如何访问appspot网站?
在调用linux系统api的时候有时会出现一些错误,比如在open linux device的时候,open失败,return -1,可以使用errno这个全局变量取得错误值。
具体在文件头#include <errno.h>
然后在函数中添加 extern int errno;
最后在fd open的case里面printf("errno=%d\n",errno);
#include <stdio.h> #include <string.h> #include <errno.h> int main(void) { int fd; extern int errno; if((fd = open("/dev/graphics/fb0",0)) < 0) { printf("errno=%d\n",errno); char * mesg = strerror(errno); printf("Mesg:%s\n",mesg); } }
以下是基于linux-2.6.36.1的errno参数值
#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 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Argument list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child processes */ #define EAGAIN 11 /* Try again */ #define ENOMEM 12 /* Out of memory */ #define EACCES 13 /* Permission denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Block device required */ #define EBUSY 16 /* Device or resource busy */ #define EEXIST 17 /* File exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */ #define ENOTDIR 20 /* Not a directory */ #define EISDIR 21 /* Is a directory */ #define EINVAL 22 /* Invalid argument */ #define ENFILE 23 /* File table overflow */ #define EMFILE 24 /* Too many open files */ #define ENOTTY 25 /* Not a typewriter */ #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 */ #define EDOM 33 /* Math argument out of domain of func */ #define ERANGE 34 /* Math result not representable */ #define EDEADLK 35 /* Resource deadlock would occur */ #define ENAMETOOLONG 36 /* File name too long */ #define ENOLCK 37 /* No record locks available */ #define ENOSYS 38 /* Function not implemented */ #define ENOTEMPTY 39 /* Directory not empty */ #define ELOOP 40 /* Too many symbolic links encountered */ #define EWOULDBLOCK EAGAIN /* Operation would block */ #define ENOMSG 42 /* No message of desired type */ #define EIDRM 43 /* Identifier removed */ #define ECHRNG 44 /* Channel number out of range */ #define EL2NSYNC 45 /* Level 2 not synchronized */ #define EL3HLT 46 /* Level 3 halted */ #define EL3RST 47 /* Level 3 reset */ #define ELNRNG 48 /* Link number out of range */ #define EUNATCH 49 /* Protocol driver not attached */ #define ENOCSI 50 /* No CSI structure available */ #define EL2HLT 51 /* Level 2 halted */ #define EBADE 52 /* Invalid exchange */ #define EBADR 53 /* Invalid request descriptor */ #define EXFULL 54 /* Exchange full */ #define ENOANO 55 /* No anode */ #define EBADRQC 56 /* Invalid request code */ #define EBADSLT 57 /* Invalid slot */ #define EDEADLOCK EDEADLK #define EBFONT 59 /* Bad font file format */ #define ENOSTR 60 /* Device not a stream */ #define ENODATA 61 /* No data available */ #define ETIME 62 /* Timer expired */ #define ENOSR 63 /* Out of streams resources */ #define ENONET 64 /* Machine is not on the network */ #define ENOPKG 65 /* Package not installed */ #define EREMOTE 66 /* Object is remote */ #define ENOLINK 67 /* Link has been severed */ #define EADV 68 /* Advertise error */ #define ESRMNT 69 /* Srmount error */ #define ECOMM 70 /* Communication error on send */ #define EPROTO 71 /* Protocol error */ #define EMULTIHOP 72 /* Multihop attempted */ #define EDOTDOT 73 /* RFS specific error */ #define EBADMSG 74 /* Not a data message */ #define EOVERFLOW 75 /* Value too large for defined data type */ #define ENOTUNIQ 76 /* Name not unique on network */ #define EBADFD 77 /* File descriptor in bad state */ #define EREMCHG 78 /* Remote address changed */ #define ELIBACC 79 /* Can not access a needed shared library */ #define ELIBBAD 80 /* Accessing a corrupted shared library */ #define ELIBSCN 81 /* .lib section in a.out corrupted */ #define ELIBMAX 82 /* Attempting to link in too many shared libraries */ #define ELIBEXEC 83 /* Cannot exec a shared library directly */ #define EILSEQ 84 /* Illegal byte sequence */ #define ERESTART 85 /* Interrupted system call should be restarted */ #define ESTRPIPE 86 /* Streams pipe error */ #define EUSERS 87 /* Too many users */ #define ENOTSOCK 88 /* Socket operation on non-socket */ #define EDESTADDRREQ 89 /* Destination address required */ #define EMSGSIZE 90 /* Message too long */ #define EPROTOTYPE 91 /* Protocol wrong type for socket */ #define ENOPROTOOPT 92 /* Protocol not available */ #define EPROTONOSUPPORT 93 /* Protocol not supported */ #define ESOCKTNOSUPPORT 94 /* Socket type not supported */ #define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ #define EPFNOSUPPORT 96 /* Protocol family not supported */ #define EAFNOSUPPORT 97 /* Address family not supported by protocol */ #define EADDRINUSE 98 /* Address already in use */ #define EADDRNOTAVAIL 99 /* Cannot assign requested address */ #define ENETDOWN 100 /* Network is down */ #define ENETUNREACH 101 /* Network is unreachable */ #define ENETRESET 102 /* Network dropped connection because of reset */ #define ECONNABORTED 103 /* Software caused connection abort */ #define ECONNRESET 104 /* Connection reset by peer */ #define ENOBUFS 105 /* No buffer space available */ #define EISCONN 106 /* Transport endpoint is already connected */ #define ENOTCONN 107 /* Transport endpoint is not connected */ #define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ #define ETOOMANYREFS 109 /* Too many references: cannot splice */ #define ETIMEDOUT 110 /* Connection timed out */ #define ECONNREFUSED 111 /* Connection refused */ #define EHOSTDOWN 112 /* Host is down */ #define EHOSTUNREACH 113 /* No route to host */ #define EALREADY 114 /* Operation already in progress */ #define EINPROGRESS 115 /* Operation now in progress */ #define ESTALE 116 /* Stale NFS file handle */ #define EUCLEAN 117 /* Structure needs cleaning */ #define ENOTNAM 118 /* Not a XENIX named type file */ #define ENAVAIL 119 /* No XENIX semaphores available */ #define EISNAM 120 /* Is a named type file */ #define EREMOTEIO 121 /* Remote I/O error */ #define EDQUOT 122 /* Quota exceeded */ #define ENOMEDIUM 123 /* No medium found */ #define EMEDIUMTYPE 124 /* Wrong medium type */ #define ECANCELED 125 /* Operation Canceled */ #define ENOKEY 126 /* Required key not available */ #define EKEYEXPIRED 127 /* Key has expired */ #define EKEYREVOKED 128 /* Key has been revoked */ #define EKEYREJECTED 129 /* Key was rejected by service */ /* for robust mutexes */ #define EOWNERDEAD 130 /* Owner died */ #define ENOTRECOVERABLE 131 /* State not recoverable */ #define ERFKILL 132 /* Operation not possible due to RF-kill */
More details, please refer to http://www.ibm.com/developerworks/cn/aix/library/au-errnovariable/
发表评论
-
What is the purpose of different Android partitions
2014-01-02 09:57 744-- Boot partition stores the An ... -
Android Partitions Explained: boot, system, recovery, data, cache & misc
2012-09-06 16:17 1108Unless you have been using your ... -
Linux Kernel Web
2012-08-08 16:40 0http://linux.chinaitlab.com/Spe ... -
What is trickle charge?
2012-07-02 09:47 893Trickle charge is just a very l ... -
Android IPC AudioFlinger binder实例
2012-06-20 13:32 1020一篇 android 的 IPC 机制 binder ... -
Android内核开发的几个常用命令
2012-02-23 15:29 1020在android源码的根目录下执行: . build/env ... -
UART的CTS/RTS介绍
2011-10-08 15:50 3225在RS232中RTS与CTS有明确的定义,但贺氏(HAYES) ... -
OMAP UART pm debugging
2011-10-08 10:59 1397OMAP UART PM Debugging/Test T ... -
kernel/omap4函数
2011-10-08 10:58 0gpio_request: 申请一个gpio,检查该 ... -
spink_lock及其各个变种区别
2011-09-23 13:37 1277spin_lock 用于阻止在不 ... -
Linux内核中的jiffies
2011-08-25 17:03 2286硬件给内核提供一个系统定时器 用以计算和管理 ... -
[RTC] Read function in RTC Driver
2011-08-16 16:49 1063read: the standard read functi ... -
宏EXPORT_SYMBOL在内核中的作用
2011-08-15 10:47 1953Module运行在kernel space,不能直接调用应用程 ... -
Linux内核API手册
2011-08-05 13:39 1483附加说明文档: http://docs.huihoo ... -
Android boot process stub
2011-07-20 10:08 0Android's boot up process is su ... -
Android boot process stub
2011-07-20 10:07 964Android's boot up process is su ... -
Linux kernel之内核定时器
2011-03-31 21:00 3707内核定时器 (也称为动 ... -
Linux kernel coding style.
2011-03-08 21:45 1402Linux内核代码风格 这是一个简短的文档,描述了linux内 ... -
[Linux Device Drivers 3rd Notes] 3. How to write a complete char device driver.
2010-12-20 15:36 0scull impression: scull - Si ... -
[Linux Device Drivers 3rd Notes] 2. Modules and kernel programming concepts
2010-12-07 17:43 1149Preparation: Come up with ...
相关推荐
- **虚拟文件系统框架**:介绍了Linux内核中的虚拟文件系统(Virtual File System, VFS)框架,它是如何抽象和统一各种文件系统的。 - **文件系统实现**:探讨了几种常见文件系统的具体实现,包括ext2、ext3等。 ####...
6. **文件I/O操作**:在Linux中,C程序员需要知道如何进行文件的创建、读写、追加和关闭等操作,这通常涉及到file descriptor、文件模式和错误处理。 7. **进程通信**:包括管道、套接字、共享内存、消息队列等,...
我们可以连接这个信号,捕获错误并采取相应措施,如显示错误信息或尝试重新连接。 为了实现更高级的功能,比如断点续传或进度条,我们还需要跟踪已发送/接收的数据量,这可以通过QAbstractSocket的bytesWritten()和...
在拷贝过程中,我们需要使用`open()`来获取源文件和目标文件的文件描述符(file descriptor)。 2. **read()**: 读取文件内容。通过调用`read()`,我们可以从源文件中读取数据到内存缓冲区。 3. **write()**: 写入...
- 操作系统限制:每个进程可以同时打开的文件描述符(file descriptor)数量是有限制的。当达到这个限制时,再尝试打开新文件就会抛出此异常。 - 缺乏资源管理:在Java中,如果打开文件后没有正确关闭,文件描述符...
- **错误检查**:它具有严格的错误检查机制,可以在编译阶段捕获许多潜在的问题,提高代码质量。 **2. NASM的使用** - **安装与配置**:下载nasm-2.05rc5-win32.zip后,解压并配置环境变量,将NASM的可执行文件路径...
这需要对文件描述符(file descriptor)和`dup2()`系统调用有深入理解。 7. **管道(Pipes)**:MiniShell可能还实现了简单的管道功能,允许用户通过`|`连接两个命令,使得前一个命令的输出成为后一个命令的输入。这...
3. 连接串口:调用`open()`方法建立连接,成功后会返回一个`FileDescriptor`,可以用于后续的数据读写操作。 4. 数据读写:使用`write()`方法发送数据,`read()`方法接收数据。注意,串口通信通常是阻塞式的,确保在...
为了解决这个问题,可以将文件放置在允许访问的目录,或者如果是在Adobe AIR环境中,可以通过修改应用程序的部署描述文件(例如,AIR descriptor file)来扩展安全沙箱权限。 3. 竞态条件(Race Condition): 如果...
文件描述符filedescriptor** - 文件描述符是文件的引用,通常从0开始编号。 **2. 打开文件:open函数** - `open()`用于打开或创建文件,并返回文件描述符。 **3. 创建新文件:creat函数** - `creat()`创建文件,...