标准输入,标准输出和标准错误
当我们使用文件描述符进行操作时,需要操作标准输入、标准输出、标准错误,可以包含如下头文件:
#include <unistd.h>
这个头文件中定义了标准设备:
/* Standard file descriptors. */
#define STDIN_FILENO 0 /* Standard input. */
#define STDOUT_FILENO 1 /* Standard output. */
#define STDERR_FILENO 2 /* Standard error output. */
任意一个进程在启动时都会初始化对应的标准设备,他们对应的文件描述符就是0,1,2。
标准输出可以使用重定向符号>进行重定向,标准错误也可以重定向到标准输出中。
ls > log.txt 2>&1
示例:
#include <stdio.h>#include <unistd.h>int main(int argc, char *argv[]){char buf[10];int n;while((n = read(STDIN_FILENO, buf, 10)) > 0) {if (write(STDOUT_FILENO, buf, n) != n) {perror("Write Failed");exit(1);}}if (n < 0) {perror("Read Failed");exit(2);}return 0;}
标准IO库中的文件操作,涉及到FILE文件流格式的标准输入,标准输出和标准错误:
#include <stdio.h>
这个头文件定义了如下的标准设备:
typedef struct _IO_FILE FILE;/* Standard streams. */
extern struct _IO_FILE *stdin; /* Standard input stream. */
extern struct _IO_FILE *stdout; /* Standard output stream. */
extern struct _IO_FILE *stderr; /* Standard error output stream. */
因此只要包含了该文件,我们可以直接使用stdin、stdout,stderr来使用。
示例:
#include <stdio.h>int main(int argc, char *argv[])
{char buf[10];int n;while((n = fread(buf, 1, 10, stdin)) > 0) {printf("fread return n:%d\n", n);if (fwrite(buf, 1, n, stdout) != n) {perror("fwrite failed");exit(1);}}if (n < 0) {perror("fread failed");exit(2);}return 0;
}
我们需要清楚的一点就是,使用标准IO库的读写操作,内部实现是包含缓冲区的,所以这里我们读10个字节,如果仅仅输入8个是不会写入到标准输出的,只有当达到10个字节才会写入。
$ ./iostream
123456789
fread return n:10
123456789
123456
789
fread return n:10
123456
789
标准输入,标准输出和标准错误相关推荐
- 【Linux】21.Linux输入输出重定向、2>1、标准输入、标准输出、标准错误
输入输出重定向.2>&1.标准输入.标准输出.标准错误 https://zhuanlan.zhihu.com/p/47765176 ./test.sh > log.txt 2> ...
- dup、dup2实现文件描述符重定向(标准输入、标准输出、标准错误输出)
目录 dup函数 dup2函数 重定向标准输入 重定向标准输出 重定向标准错误输出 重定向恢复 总结 在前文中,可以知道,文件描述符实际上是指向文件表项的指针数组索引,也就相当于每个文件描述符都对应一 ...
- Linux的标准输入、标准输出和标准错误
Linux的标准输入.标准输出和标准错误 什么是文件描述符? 文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket. 最前面的三个文件描述符(0,1,2)分别与标准输入(std ...
- Bash中的标准输入、标准输出和标准错误输出
原理 每个程序在运行后,都会至少打开三个文件描述符,分别是0:标准输入:1:标准输出:2:标准错误. 例如,对于test.sh脚本,我们通过下面的步骤看到它至少打开了三个文件描述符: ./test.s ...
- 默认标准错误文件linux,Linux中标准输出和标准错误的重导向
若是一个命令须要长时间在服务器上运行,那么不少时候会用到nohup命令,这时即使远程登陆ssh中断了与服务器的联系,那么在服务器上运行的命令也不会所以而被迫中止.shell 一般状况下,nohup与& ...
- 文件IO---标准输入、标准输出和标准错误
文件IO---标准输入.标准输出和标准错误 (1) 每个进程都会默认打开3个文件描述符,即0.1.2.其中0代表标准输入流.1代表标准输出流.2代表标准错误流.通常标准输入流对应着键盘的设备文件.标准 ...
- linux 的错误输出黑洞,Linux的标准输出、标准错误输出、nohup
1.在bash中标准输出可以用1来表示:通常来说这个1可以省略: 如./xxx >/dev/null 和 ./xxx 1>/dev/null 是一个意思 2.在bash中标准错误输出可以用 ...
- 标准输出和标准错误输出
相关概念 默认情况下,总是有三个文件处于打开状态 1. 标准输入(键盘输入) 对应文件描述符0 2. 标准输出(输出到屏幕) 对应文件描述符1 3. 标准错误(也是输出到屏幕) 对应文件描述符2 常用 ...
- 标准输出和标准错误重定向
程序:指令+数据 读入数据:Input 输出数据:Output 在linux中一条指令或者程序,可以分为三种形式: 标准输入:-0 默认接受来自键盘的输入 标准输出:-1 默认输出到终端窗口 标准错误 ...
最新文章
- 一步一步教您打印出自己大脑的3D模型
- _Linux系统编程—信号集操作函数
- 简易调用及实例化视图
- Java接口long类型精度丢失,解决前后端交互Long类型精度丢失问题
- AMUL的完整形式是什么?
- dbcp连接池配置参数
- 软测基础相关知识回顾
- 深入理解同步/异步与阻塞/非阻塞区别 (转)
- 计算机桌面黑屏时间,您必须等待至少一分钟,计算机才能将屏幕保护程序设置为使计算机黑屏...
- CAM350 使用,典型做钢网
- 和利时dcs系统服务器设置,和利时DCS系统常见问题分析
- excel 取消合并单元格
- 达梦8初始化参数之BLANK_PAD_MODE
- Excel 表格图片压缩方法
- MIC的常见问题分析
- 利用Fiddler抓包解析,轻松下载m3u8格式网络视频
- 英美团队发现神秘信号:金星上可能存在生命?
- 用友GRP-u8 XXE 漏洞复现
- 【接口篇 / Wan】(6.4) ❀ 01. 拨号宽带经过防火墙后的速度变化 ❀ FortiGate 防火墙
- 我的第一个小程序【深车摇知】成功上线啦