我不明白我在执行cp命令时出了什么问题

问题描述 投票:0回答:2

我正在尝试使用C在UNIX上模拟cp。这是我的代码。

#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char const *argv[])
{
  int src, dest;
  char buff[256];
  int bits_read;

  src = open(argv[1], O_RDONLY);
  dest = open(argv[2], O_WRONLY | O_TRUNC | O_CREAT, 0644);

  if (dest < 0)
    perror("Er");

  while ((bits_read = read(src, buff, sizeof(buff))) > 0)
    if (bits_read != write(dest, buff, sizeof(buff)))
      perror("Er");

  close(src);
  close(dest);

  return 0;
}

我得到以下输出:

Er: Undefined error: 0

我可以看到新文件的末尾包含一些重复的行。

c unix cp
2个回答
2
投票
最后一行不是sizeof(buf)长。使用

0
投票
有一些错误,有时是逻辑上的(例如,写操作需要字节来读入参数;或者需要以错误退出,否则为什么继续出现阻塞错误),奇怪的命名(例如,大小不是以字节为单位)位),也有错误,例如样式代码。无论如何,请阅读以下代码并将其与您的代码进行比较,我只做了基本的修订,但我没有尝试过,但是我认为可以编译并运行而不会出错。我再说一遍,否则我只作了一点评论就很难理解您的错误:
© www.soinside.com 2019 - 2024. All rights reserved.