linux下的read和write的问题,求助!
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char** argv)
{
int fd, fd_b;
int ret = 0;
char buffer[128];
if((fd = open("snake.c", O_RDONLY),0666) < 0)
{
printf("First file open fail!\n");
exit(-1);
}
if((fd_b = open("test_new.c", O_CREAT | O_WRONLY | O_TRUNC), 0666) < 0)
{
printf("Second file open fail!\n");
exit(-1);
}
//运行完后为什么test_new.c文件总是比原文件多几行呢??非常不理解!
while(1)
{
if((ret = read(fd, buffer, sizeof(buffer) - 1)) < 0)
{
printf("read fail!\n");
exit(-1);
}
if(write(fd_b, buffer, strlen(buffer) - 1) < 0)
{
printf("write fail!\n");
exit(-1);
}
//这个地方是如果读取完了,返回读的数小于buffer那么就应该退出。
if(ret < (sizeof(buffer))-1)
{
break;
}
}
printf("buffer = %s\n", buffer);
close(fd);
close(fd_b);
return 0;
}
这个小程序是在linux下编辑的,谢谢大师帮忙解答!!
...全文
相关推荐
一些基础的 Linux 问题与讨论
一些基础的 Linux 问题与讨论 转载文档,觉得不错就推荐给大家了,只是。。。呵呵
Unix/Linux中的read和write函数
1、文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用open或create返回的文件描述符表示该文件,将其作为参数传给read或write函数。 2、write函数 write函数定义如下: #include ssize_t write(int filedes, void *buf, size_t nbytes); // 返回:若成功则返回写入的字节数,若出错则返回-1 // filedes:文件描述
linux常用的C函数open,write、read
对linux基本的C函数open、write、read的使用方法进行了描述
linux系统open、read 、write使用实例.rar
linux系统编程之open、read 、write函数使用实例,全部调试通过,可用
linux下系统调用write过程
在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面


