博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
标准I/O
阅读量:2028 次
发布时间:2019-04-28

本文共 1130 字,大约阅读时间需要 3 分钟。

在unix系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FILENO,标准出错用STDERR_FILENO.

他们的区别:
stdin等是FILE *类型,属于标准I/O,在<stdio.h>。
STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2,属于没有buffer的I/O,直接调用系统调用,在<unistd.h>。

下面一个例子是对STDOUT_FIFENO 和STDIN_FILENO的应用:

#include<unistd.h>

#define SIZE 100

int main(void)
{
        int n;
        char buf[SIZE];

        while(n=read(STDIN_FILENO,buf,SIZE))   //读取标准输入到buf中,返回读取字节数。
      {
                if(n!=write(STDOUT_FILENO,buf,n)) 把buf 写到标准输出中
                        perror("write error");
        }
        if(n<0) perror("read error");   
        return 0;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
如果按照常规的使用方法:
 gcc -o app stdout.c 
 ./app
fdfe
fdfe
fefefef
fefefef
//输入一行,马上输出一行,也就是按照原样输出
===========================================================================
使用重定向来运行
 ./app> data
fefe
fdadfdf
adfdfef
//输入的字符串并不是输出到终端,而是输出到data文件中。
==========================================================================
 ./app <stdout.c >data
 
//这一句相当于把stdout.c复制到data中去
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
STDOUT_FILENO和STDIN_FILENO在默认的情况下是终端,
使用ctrl+D来输入文件结束符

本文来自CSDN博客,转载请标明出处:

你可能感兴趣的文章
浏览器 extension和plugin的区别[来自知乎]
查看>>
DllRegisterServer的调用失败
查看>>
IE加载项
查看>>
插件原理[转自CSDN]
查看>>
插件原理2[转自CSDN]
查看>>
COM编程快速入门[转自VCbase]
查看>>
IDispatch的介绍[转自CSDN]
查看>>
Google面试题[一]
查看>>
插件原理[转]
查看>>
VBA得到word中的超链接
查看>>
BSTR等的相互转换[转]
查看>>
windows COM调试[转]
查看>>
Memory leak [转]
查看>>
ComBSTR的使用
查看>>
window COM调试2[转]
查看>>
IDL文件详解[转]
查看>>
拼写检查器的编写[转]
查看>>
Twips 缇的含义[来自网络]
查看>>
硬回车与软回车[转]
查看>>
Office插件编程[转]
查看>>