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 定义在 <unistd.h>中,值分别是 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);
    }
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值