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

时间:2019-11-15 13:03:11

标签: c unix cp

我正在尝试使用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

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

1 个答案:

答案 0 :(得分:2)

最后一行不是sizeof(buf)长。
使用

if (bits_read != write(dest, buff, bits_read))