stdin,stdout 和 STDOUT_FILENO,STDIN_FILENO
stdin
,stdout
等类型为 FILE *
。
STDIN_FILENO
,STDOUT_FILENO
,STDERR_FILENO
等类型为 int
。
使用 FILE *
的函数主要有:fopen、fread、fwrite、fclose
等,基本上都以 f
开头。
使用 STDIN_FILENO
等的函数有:open、read、write、close
等。
stdin
等属于标准 I/O,高级的输入输出函数,定义在 <stdio.h>
。
STDIN_FILENO
等是文件描述符,是非负整数,一般定义为0, 1, 2,直接调用系统调用,定义在 <unistd.h>
。
fileno()
函数可以用来取得 stream
指定的文件流所使用的文件描述符:
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("%d \n",fileno(stdin)); //0
printf("%d \n",fileno(stdout)); //1
printf("%d \n",fileno(stderr)); //2
return 0;
}
接受标准输入,输出到标准输出:
#include <stdio.h>
#include <unistd.h>
#define SIZE 100
int main()
{
int n;
char buf[SIZE];
while(n = read(STDIN_FILENO,buf,SIZE))
{
if(n != write(STDOUT_FILENO,buf,n))
perror("write error");
}
if(n < 0)
perror("read error");
return 0;
}
stdin,stdout 和 STDOUT_FILENO,STDIN_FILENO的更多相关文章
- stdin stdout stderr - 标准 I/O 流
Fd #include <stdio.h> Fd extern FILE *stdin; Fd extern FILE *stdout; Fd extern FILE *stderr; D ...
- vbs脚本要求在cmd中输入输出用StdIn ,StdOut
Dim StdIn, StdOutSet StdIn = WScript.StdInSet StdOut = WScript.StdOut Do While Not StdIn.AtEndOfStre ...
- WorkerMan源码分析(resetStd方法,PHP中STDIN, STDOUT, STDERR的重定向)
WorkerMan中work.php中 resetStd 方法中代码如下 public static function resetStd() { if (!static::$daemonize || ...
- stdin stdout stderr 标准I/O流
Unix中一切皆文件,磁盘等设备在操作系统来看都是文件. 对文件进行操作时,需要打开这个文件,并获得文件描述符(file descriptor, fd) 而每个进程生来就有三个文件描述符绑定在它身上, ...
- shell基础知识之 stdin,stdout,stderr和文件描述符
stdin,stdout,stderr stdin=0 stdout=1 stderr=2 使用tee来传递内容,把stdout 作为stdin 传到下个命令 root@172-18-21-195:/ ...
- 以冒泡排序为例--malloc/free 重定向stdin stdout
esort.c 代码如下,可关注下mallloc/free,freopen重定向的用法,排序为每轮将最小的数放在最前面: #include<stdio.h> #include<mal ...
- [LINK]php的三种CLI常量:STDIN,STDOUT,STDERR
FROM : http://www.cnblogs.com/thinksasa/archive/2013/02/27/2935158.html PHP CLI(command line interfa ...
- 【转】stdin, stdout, stderr 以及重定向
详细见: http://my.oschina.net/qihh/blog/55308 stdin是标准输入文件,stdout是标准输出文件,stderr标准出错文件. 程序按如下方式使用这些文件: 标 ...
- 重定向stdin stdout stderr |
在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据 流,也就是题目中所提到的这三个.那么什么是数据流呢(stream)? 我们知道,一个程序要运行,需要有输入.输出,如果出错, ...
随机推荐
- leetcode2. 两数相加
使用迭代的方式 class Solution{ public: ListNode *addTwoNumbers(ListNode* l1,ListNode *l2) { ListNode *res=) ...
- nexus php composer 私服搭建
nexus 社区也提供了php composer 私服(当前还在开发中,还没有ga),测试使用构建好的docker 镜像 环境准备 docker-compose 文件 version: "3 ...
- 基于github发布 个人网站/博客
我们可以使用GitHub去发布自己的网站了(静态网站), 只要经过简单几步即可.这样小伙伴可以给朋友或面试官展示自己个人项目啦. 第一步:创建一个新仓库 第二步:在仓库选择“Settings”页,找到 ...
- 2,[VS入门教程] 使用Visual Studio写c语言 入门与技巧精品文~~~~优化篇
本文导航: 关闭界面特效以提高流畅度 解决调试时出现"无法查找或打开PDB文件"的符号问题 注册微软账号并在vs登录 使用Visual Studio Team Services,同 ...
- uniApp配置文件几个注意点
虽然有文档,但是偶尔还是会又找不到的,写下来遇到过的问题,随时补充.好记性不如烂笔头. 1.打包完安装之后,app 有时候会弹出一个提示框.如下: 修改配置项,设置 ignoreVersion 为 t ...
- Linux 使用squid3搭建代理服务器
在对接微信/支付宝等3方业务时,往往都有ip白名单的设置,由于内网往往都是动态ip,频繁配置白名单是件及其繁琐的事情. 使用代理转发就是最方便的做法. 下面就使用squid3配置一台代理服务器. sq ...
- mtd-utils编译安装过程
git clone git://git.infradead.org/mtd-utils.git cd mtd-utils apt install -y libssl-dev libzlb libzst ...
- .NET Core创建Worker Services
.NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序.如果安装的vs2019是中文版本,W ...
- 在Azure DevOps Server (TFS)中实现VUE项目的自动打包
概述 Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.由于它在数据绑定.页面展示和使用简单方面有很大的优势,逐渐被越来越多的前端开发团队使用.本文 ...
- IntelliJ IDEA 提交代码时出现:Code analysis failed with exception: com.intellij.psi......
IntelliJ IDEA 提交代码时出现:Code analysis failed with exception: com.intellij.psi...... 错误原因: 当我们勾选Perform ...