STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO类型为 int

stdin, stdout, stderr类型为 FILE*
STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO类型为 int

使用stdin的函数主要有:fread、fwrite、fclose等,是文件流方式。属于高级IO,带缓冲的。

使用STDIN_FILENO的函数有:read、write、close等, 属于低级IO,要自己处理缓冲。

STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO 定义在 中,值分别是 0,1,2.


printf -> stdout -> STDOUT_FILENO(1) -> 终端(tty)


通常守护进程在后台运行,所以要将它的标准输入输出重定向到/dev/null。

复制代码
  1. fd = open("/dev/null", O_RDONLY);
    if(fd != -1){
    dup2(fd, STDIN_FILENO);
    dup2(fd, STDOUT_FILENO);
    dup2(fd, STDERR_FILENO);
    if(fd > 2){ /*就是除了标准输入,输出和错误,其他的都关闭啊*/
    close(fd);
    }
    }



你可能感兴趣的:(STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO类型为 int)