C语言文件I/O问题



 #include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

int main(void)
{
  int i, fd;
  if(fd = open("main.txt", O_RDWR | O_CREAT, 0644) < 0)
    puts("open error");

/* 当把下面的条件语句改成两个语句:
 * i = dup(fd);
 * if(i == -1)
 * 这样就可以使得字符串:"hello"是向文件main.txt中写入,
 * 而不是写入标准输出,在终端下显示。
 * 我的问题是为什么这样不可以呢,第一个if里的open()就可以这样写呢。
 */

  if(i = dup(fd) == -1)
    puts("dup error");
  write(i, "hello", 5);  /* 并没有在文件main.txt中写入"hello",而写入标准输出 */
  return 0;
}

c Linux shell

消灭一切敌人 11 years, 6 months ago

Your Answer