读写系统调用始终返回1

Nav*_*mar 0 c linux

我需要将一个文件的内容复制到另一个文件.但问题是我一直得到读写返回值1.但是在缓冲区数据中读取.有人可以解释这里出了什么问题吗?我正在使用gcc编译器.

#include<stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include<string.h>
int copy_file_to_file(int,int);
int main()
{
    int src_fd,dst_fd;
    if ( (src_fd = open("source.txt",O_RDONLY)) == -1 )
    {
       printf("file opening error");
       return -1;
    }
    if( (dst_fd = open("destination.txt",O_WRONLY | O_CREAT,0644)) == -1 )
   {
       printf("destination file opening error\n");
       return -1;
   }
   copy_file_to_file(src_fd,dst_fd);
   close(src_fd);
   close(dst_fd);
   return 0;
}

int copy_file_to_file(int source_fd,int dest_fd)
{
    int byte_read, byte_write;
    char buf[10];

    while((byte_read = read(source_fd, buf, 10)>0) )
   {

      byte_write=write(dest_fd, buf, byte_read);
      printf("buf=%s byte_read = %d byte_write=%d \n",buf,byte_read,byte_write);
   }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出: -

buf=Hello world
Run Code Online (Sandbox Code Playgroud)

我在工作 byte_read = 1 byte_write=1

bol*_*lov 8

while((byte_read = read(source_fd, buf, 10)>0) )
Run Code Online (Sandbox Code Playgroud)

被解释为 (br = (read() > 0))

固定:

while((byte_read = read(source_fd, buf, 10)) > 0)
Run Code Online (Sandbox Code Playgroud)

运算符优先级