#include "apue.h"
#define BUFFSIZE 4096
int main(void)
{
int n;
char buf[BUFFSIZE];
while((n=read(STDIN_FILENO,buf,BUFFSIZE))>0)
if(write(STDOUT_FILENO,buf,n)!=n)
err_sys("write error!");
if(n<0)
err_sys("read error!");
exit(0);
}
我将上面这段代码命名为in2out.c,编译:
gcc -o in2out in2out.c
将此程序的目标文件命名为in2out。
运行方法:
./in2out >data
此时的编准输入为终端,标准输出则重定向到文件data,标准出错也是终端。如果此输出文件不存在,则shell会创建它。该程序将用户键入的各行复制至标准输出,键入文件结束字符(通常是Ctrl+D)时,则终止该次复制。
程序说明:
(1)两个常量STDIN_FILENO和STDOUT_FILENO定义在头文件<unistd.h>中,它们指定了标准输入和标准输出的文件描述符。
(2)read函数返回读得的字节数,此值用作要写的字节数。当文件到达的尾端时,read返回0,程序停止执行。如果发生一个错误,read返回-1。出错时大多数系统函数返回-1。
分享到:
相关推荐
`InputStreamReader`是字节流到字符流的桥梁,它将来自`System.in`的标准输入转换为字符流。接着,`BufferedReader`用于提高读取效率,通过`readLine()`方法逐行读取用户输入,直到用户停止输入或者输入为空。 实验...
本文将深入解析标准输入、输出、错误输出及其重定向机制,帮助你更好地理解和运用这些概念。 1. 标准输入输出与错误输出 标准输入(stdin,0)通常来自键盘,提供给程序读取数据;标准输出(stdout,1)默认指向...
- `tee`: 将标准输入复制到标准输出和文件。 - `basename`、`dirname`: 获取文件名或路径名称。 - `head`、`tail`: 显示文件的头部或尾部内容。 - `sed`: 对文件进行流编辑。 - `awk`: 处理文本数据。 #### 条件...
- `tee`: 将标准输入复制到标准输出和文件。 - `basename`: 返回文件名部分。 - `dirname`: 返回文件的目录部分。 - `head`: 显示文件头部。 - `tail`: 显示文件尾部。 - `sed`: 流编辑器,用于文本过滤和转换。 - `...
- **tee**: 将标准输入复制到标准输出及文件。 - **basename**: 返回路径的基名。 - **dirname**: 返回路径的目录名。 - **head**: 显示文件的前几行。 - **tail**: 显示文件的后几行。 - **sed**: 文本流编辑...
在Java编程中,实现从标准输入流(Standard Input Stream)读取字符串,然后将这些字符串写入文件,以及从文件中读取内容并保存到另一个文件的功能,涉及到多个核心概念和API。以下是对这些知识点的详细说明: 1. *...
10. **标准输入输出流**:System.in代表标准输入(键盘),System.out代表标准输出(屏幕),System.err代表错误输出(通常也是屏幕)。 在你的Java作业中,你可能会被要求创建和使用这些不同的流类型,比如实现...
标准输入(`stdin`)、标准输出(`stdout`)和标准错误(`stderr`)是预定义的文件指针。通常,`scanf()`和`printf()`分别用于从标准输入读取和向标准输出写入。 ### 2. 基于文件描述符的文件操作(非缓冲) #### 2.1. ...
本篇文章将详细讲解如何实现将输入复制到输出,并在此过程中处理特定字符的转换。我们将通过两个不同的实例来探讨这个主题。 首先,我们要解决的是将输入的文本复制到输出,同时替换特定字符。在这个例子中,我们将...
C语言使用标准输入输出函数,如`scanf()`、`printf()`,并可通过`<stdio.h>`中的`fread()`和`fwrite()`处理文件流。C#的`StreamReader`和`StreamWriter`以及`BinaryReader`和`BinaryWriter`分别对应字符和二进制的...
在本程序中,我们需要将输入的字符串中的小写字母转换成大写字母。这个过程可以通过遍历字符串,每遇到一个小写字母便将其转换成大写字母。这个过程可以使用 ASCII 码表来实现,因为小写字母和大写字母之间的 ASCII ...
例如,mysh > mylog.txt 2>&1 就可以将标准输出和错误输出都重定向到 mylog.txt 文件中。 此外,我们还可以使用 /dev/null 来忽略标准输出或错误输出。例如,mysh > /dev/null 2>&1 就可以忽略标准输出和错误输出。...
Java预定义了三个标准流:`System.in`(标准输入)、`System.out`(标准输出)和`System.err`(错误输出)。它们通常与键盘、显示器和错误日志关联。 ### 打包与解包流(GZIPOutputStream, GZIPInputStream) 用于...
`iostream`库是C++标准库的一部分,包含了基本的输入输出流对象,如`cin`用于标准输入,`cout`用于标准输出。`cin`常用来从键盘读取数据,而`cout`则用于打印信息到控制台。例如,简单的输入输出操作可以这样表示: ...
从标准输入接收学生信息(如学号、姓名等),当输入“bye”时结束,将信息保存到`myfile1.txt`。 3. 将`myfile1.txt`的内容复制到`myfile2.txt`。 - **关键步骤**: - 使用`BufferedReader`从控制台读取输入。 -...
Streams 阅读和 Tee 计划 该程序应该从标准输入获取输入并将其输出到标准输出和运行时指定的文件。 示例:节点 tee outputfile.txt 将回显用户提供的输入并将其复制到 outputfile.txt 文件中
在C++中,`cin`和`cout`用于处理标准输入和输出。对于`char`类型的字符,可以直接使用`cin >> charVar;`来输入,`cout ;`来输出。但对于字符串,使用`cin`和`cout`操作时需要注意: - 输入:`cin >> str;`会读取...
- `将标准输入复制自文件描述符`n`。 - `关闭标准输入。 - `>&-`:关闭标准输出。 - **特定文件描述符的操作**: - `2> file`:运行命令并将错误输出重定向到`file`。 - `2>&1`:运行命令并将标准输出和错误...
- **插入操作符`重载**:这是最常用的输出方式,可以将各种简单类型的数据(如整型、浮点型、字符串等)直接输出到文件。例如,在例1中,通过`fout 将0到20的整数写入文件。如果要输出自定义类型的数据,需要重载`...
本文将详细介绍Linux下的标准输入、标准输出以及文件操作的基本概念和技术。 #### 二、基于文件指针的文件操作(缓冲) 在Linux中,基于文件指针的文件操作是一种常用的方法,它使用了缓冲区来提高文件读写的效率...