重定向文件内容到标准错误

#include <stdio.h>

void redirect_file_to_strerr(void);

int main(int argc, char const *argv[])
{
  redirect_file_to_strerr();
  return 0;
}

void redirect_file_to_strerr(void)
{
  FILE *f;
  f = fopen("redirect_file_to_strerr.txt", "w");
  dup2(2, fileno(f));
  fprintf(f, "%s\n", "hello world");
}

假设 f的文件描述符为10;
dup2(2, fileno(f))将把流向f的数据重定向到strerr,所以写入f的内容不会被保存在文件中,而是显示在了屏幕上(sterr默认流向屏幕),redirect_out_to_file.txt文件内容为空。

1 => screen
2 => screen
10 => redirect_file_to_strerr.txt”
10 => 2