linux下c语言编程read()函数的问题

read返回始终是-1。。。求解是为什么

返回-1的时候,要根据错误码来判断原因,请看下面的函数说明:

表头文件 #include<unistd.h>
定义函数 ssize_t read(int fd,void * buf ,size_t count);
函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。
附加说明 如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count 作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。
错误代码 EINTR 此调用被信号所中断。 EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。 EBADF 参数fd 非有效的文件描述词,或该文件已关闭。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-08
On error, -1 is returned, and errno is set appropriately.

读出错了
http://linux.die.net/man/2/read
第2个回答  2013-04-09
调用perror看原因
第3个回答  2013-04-08
源码贴出来。也好看看嘛,不然别人都没办法知道你什么出错了
第4个回答  2013-04-07
man read, 看看文档怎么说阿

linux下c语言编程read()函数的问题
定义函数 ssize_t read(int fd,void * buf ,size_t count);函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到...

arm6410,linux,c语言,read函数返回-1,错误:bad address
1、可以事先检查一下传递给 read() 函数的 fd 是否合法,即在 'if ((nread = read(fd,myBuff2,strlen(myBuff2)))>0)' 之前判断 if ( fd == NULL ) printf("出错啦!\\n");2、read()函数是文件操作函数,在c语言中很重要。函数的返回值如下:(1)如果成功,返回读取的字节数;(...

Linux C语言中 read函数,读完指令后指针会后移吗?
会 的,read函数执行时,就像是操作堆栈差不多,如果是十六个字节,他是依次读取,每往后移动一位,最前面的一位就会被覆盖掉。

Linux系统下C语言read,write函数
在Linux系统中,C语言的read和write函数常用于实现文件操作,比如简单的文件复制。以下是一个基础示例,用于帮助理解这两个函数在实际应用中的用法。首先,理解main函数的参数至关重要。在Linux系统编程中,我们通常使用`int main(int argc, char *argv[])`,而不是仅`int main()`。参数`argc`代表命...

errnolinux
c语言中read函数的用法?函数原型定义:ssize_tread(intfd,void*buf,size_tcount);2\/8 使用的头文件:includeunistd.h> 3\/8 函数的返回值说明:(1)如果成功,返回读取的字节数;(2)如果出错,返回-1并设置errno;(3)如果在调read函数之前已是文件末尾,则返回0 4\/8 函数的参数【intfd】:...

C语言open及write read的问题
if(fd=open(argv[1],O_CREAT|O_RDWR,0755)<0)这句有问题 赋值运算符的优先级 低于 比较运算符 因此open的返回值a大于0,a<0为假,因此fd最后被赋值为0

在Linux下用C语言编程
4。守护进程的创建 如果你在DOS时代编写过程序,那么你也许知道在DOS下为了编写一个常驻内存的程序我们要编写多少代码了.相反如果在Linux下编写一个"常驻内存"的程序却是很容易的.我们只要几行代码就可以做到. 实际上由于Linux是多任务操作系统,我们就是不编写代码也可以把一个程序放到后台去执行的.我们...

如何自己编程实现linux中的read()、write()函数??
首先你要说明白,你是要实现的是文件的读写还是网络上的数据传输?然后呢,要说的是无论是网络还是文件的读写,这两函数都已经需要syscall到内核来实现了。。。最后呢,想要自己搞得编写相应的IO操作驱动(我是不会的了),或者直接用syscall函数调系统服务,单纯的C语言可能无法实现。

Linuxread函数readlinux函数
一、C语言库函数打开文件:fopen读写(一般对应成对使用):fgetc---fputcfgets---fputsfread---fwrite关闭文件:fclose 二、Linux系统函数打开文件:open读写(一般对应成对使用):read---write关闭文件:close shell怎么用read获取小数?要与Linux交互,脚本获取键盘输入的结果是必不可少的,read可以...

C语言中的read和write怎么用?
1.纠正:read和write是UNIX或者一些类UNIX系统,比如LINUX系统中使用的,称为LINUX系统函数。这种函数只能在特定的操作系统下使用,可移植性差。fread和fwrite是C库函数。这种函数基本在任何操作系统都能使用,可移植性高。2.基础知识介绍 只介绍LINUX系统函数,常用的有creat,open,close,read,write,lseek,...

相似回答