漫谈由标准输入\输出\错误输出引发的思考

news2024/9/22 5:33:53

标准输入|输出|错误输出

Unix\Linux体系中,一个进程通常自带有标准输入、标准输出、标准错误输出等三个文件描述符。

如果从对称的观点来看,它确实长的有点奇怪,但它背后隐藏了什么样的知识和道理呢?

从图灵机模型谈起

以前谈到现在计算机背后的理论结构是图灵机,而图灵机模型仅需要左右两边的纸带,其实可以直接对应输入和输出。

那么多出来的标准错误输出是做什么的呢?

从程序的运行期输出结构谈起

我们知道,一个程序在运行期不携带日志系统通常是无法想象的,但是,一般程序又有自己的输出数据,而日志信息是明显有区别于这些输出协议数据。

这个在Unix\Linux体系中典型程序ssh中,明显区分了标准错误输出和标准输出的不同,以利于运行期信息和数据的分别输出,见ssh的scp模式

# 甚至可以日通过管道组合命令,避免scp过程中间文件的形成
ssh user@remotehost 'cat > remotefile' < localfile
ssh user@remotehost 'cat remotefile' > localfile

另外,特别在Shell编程中,经常通过管道或者IO重定向组合拼接命令。如果命令运行过程中,出现某些提示或错误信息,可以能够标准错误输出对应的控制台或终端,及时展现将是非常方便的。

它山之石

通过阅读一些网络E文,感觉Unix\Linux体系特别地具有标准输出错误文件描述符,可能来自传统实践,和shell编程上的便利。

我们通常也可以看到,如果程序的标准输出也是日志信息的情况下,在日志收集的时间,采用1>log.txt 2>&1 or &>log.txt的命令语法,将标准输出和错误输出都指向相同的目的。


谈谈普适图灵机

在一系列图灵机中,有一类的图灵机具有普适的特点,我们称其为普适图灵机

这类图灵机的核心就是可以将其它图灵机的控制转移函数作为自己的输入,然后再去模拟那个图灵机的行为。

如果从学习的观点来看,这其实就相当于学习过程,增强了个人能力,所以,才能普适。

如果从递归的观点来看,这其实就相当于无穷套娃的能力。需要指出的是,在可计算性理论模型上,图灵机理论与递归理论被认为是等价的计算模型。

不严格地说明,普适图灵机正是展现了递归特点,图灵机的图灵机。

特别思考

可计算模型界定的问题是什么是可计算,和什么是不可计算。

可计算模型中计算的涵义,与我们通常认为的计算有细微的区分,但都包括我们普通意义上的计算。

可认为可计算模型中的计算,是计算的尽头;它之外是不可计算!


某些特殊命令

某些特殊命令,不单单从命令参数接受参数,也可以从标准输入接受参数,但,例如,catmd5sum只能从标准输入传入字符串参数,则需要here documenthere string技术。

cat << _EOF_
<html>
...
</html>
_EOF_

cat <<< 'Hello world'
md5sum <<< 'aaa'

对比来看,tar命令明显地区分了标准输入参数和标准输出参数时的涵义。特别地,tar命令通过’-'符号来约定指明。

  • 可以看到’-'符号并不专门指代标准输入或标准输出,而是命令的一种处理约定

If you use ‘-’ as an archive-name, tar reads the archive from standard input (when listing or extracting files),
or writes it to standard output (when creating an archive).
If you use ‘-’ as an archive-name when modifying an archive, tar reads the original archive from its standard input and writes the entire new archive to its standard output.

参考

  • Tar对于’-'符号作为标准输入和输出的约定处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2154280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch 检索优化:停用词的应用

Elasticsearch 检索优化&#xff1a;停用词的应用 场景描述 目前在 Elasticsearch 集群中存储约 1.5 亿篇文章数据&#xff0c;随着数据量的增加&#xff0c;检索性能问题逐渐显现。在列表检索和聚合操作中&#xff0c;CPU 消耗飙升至 100%&#xff0c;并且检索耗时较长&…

Java | Leetcode Java题解之第424题替换后的最长重复字符

题目&#xff1a; 题解&#xff1a; public class Solution {public int characterReplacement(String s, int k) {int len s.length();if (len < 2) {return len;}char[] charArray s.toCharArray();int left 0;int right 0;int res 0;int maxCount 0;int[] freq n…

时序预测|基于灰狼优化LightGBM的时间序列预测Matlab程序GWO-LightGBM 单变量和多变量 含基础模型

时序预测|基于灰狼优化LightGBM的时间序列预测Matlab程序GWO-LightGBM 单变量和多变量 含基础模型 文章目录 一、基本原理原理概述流程注意事项 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 时序预测中使用灰狼优化&#xff08;GWO&#xff09;结合LightGBM的…

【问题随记】在使用 AuthenticationManager 的时候,出现循环依赖问题 —— `java.lang.StackOverflowError`

问题随记 在使用 AuthenticationManager 的时候&#xff0c;出现循环依赖问题 —— java.lang.StackOverflowError&#xff0c;查资料查了两天半&#xff0c;终于找到原因。 2024-06-16T17:54:19.48708:00 ERROR 20672 --- [nio-8789-exec-1] o.a.c.c.C.[.[.[/].[dispatcherS…

猫咪检测系统源码分享

猫咪检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

AI健身之俯卧撑计数和姿态矫正-角度估计

在本项目中&#xff0c;实现了Yolov7-Pose用于人体姿态估计。以下是如何在Windows 11操作系统上设置和运行该项目的详细步骤。 环境准备 首先&#xff0c;确保您的计算机已经安装了Anaconda。Anaconda是一个开源的Python发行版本&#xff0c;它包含了conda、Python以及众多科…

静态链表:实现、操作与性能优势【算法 16】

静态链表&#xff1a;实现、操作与性能优势 在算法和数据结构的探索中&#xff0c;链表作为一种基础且灵活的数据结构&#xff0c;广泛应用于各种场景。然而&#xff0c;在算法竞赛或需要高效内存管理的环境中&#xff0c;传统的动态链表可能会因为内存分配和释放的开销而影响性…

完整版:NacosDocker 安装

第一步&#xff1a;先直接通过命令安装 Nacos docker run --name nacos2.2.3 -d -p 8848:8848 -e MODEstandalone f151dab7a111 第二步&#xff1a;创建 Docker 挂载目录 # 创建 log 目录 mkdir -p /root/nacos 第三步&#xff1a;将 Docker 容器的文件复制到挂载目录中 …

C++之Person类

首先设置头文件&#xff0c;将题目中的要求完成。 #include <iostream>using namespace std;class Person { public:Person();Person(string name, int id, string address);~Person();void setPerson(string name, int id, string address);void setName(string name);…

python新手的五个练习题

代码 # 1. 定义一个变量my_Number,将其设置为你的学号&#xff0c;然后输出到终端。 my_Number "20240001" # 假设你的学号是20240001 print("学号:", my_Number) # 2. 计算并输出到终端:两个数(例如3和5)的和、差、乘积和商。 num1 3 num2 5 print(&…

计算机的错误计算(一百)

摘要 探讨 与 的计算精度问题。 从计算机的错误计算&#xff08;九十九&#xff09;知&#xff0c;运算 与 均被列在IEEE754-2019中。然而&#xff0c;似乎并没有哪种语言实现内置了第二个运算。 例1. 计算 与 不妨在Python 3.12.5 下计算&#xff0c;则有 然而&#…

华为HarmonyOS地图服务 5 - 利用UI控件和手势进行地图交互

场景介绍 本章节将向您介绍如何使用地图的手势。 Map Kit提供了多种手势供用户与地图之间进行交互,如缩放、滚动、旋转和倾斜。这些手势默认开启,如果想要关闭某些手势,可以通过MapComponentController类提供的接口来控制手势的开关。 接口说明 以下是地图的控件和手势相…

设计模式之代理

一、代理设计模式概念 代理模式 (Proxy) 是一种结构型设计模式&#xff0c; 为其他对象提供一种代理以控制对这个对象的访问。 代理模式介绍了一种访问对象的间接等级。一个远程代理可以隐藏一个对象在不同地址空间的细节。一个虚拟代理可以根据需要最优化创建对象的开销。而安…

黄酮类化合物及其衍生物生物合成的进展:构建酵母细胞工厂的系统策略-

Advances in Flavonoid and Derivative Biosynthesis: Systematic Strategies for the Construction of Yeast Cell FactoriesCli 黄酮类化合物及其衍生物生物合成的进展&#xff1a;构建酵母细胞工厂的系统策略 摘要 黄酮类化合物是一类重要的天然多酚化合物&#xff0c;具有…

ESP32-WROOM-32 [创建AP站点-客户端-TCP透传]

简介 基于ESP32-WROOM-32 开篇(刚买)&#xff0c; 本篇讲的是基于固件 ESP32-WROOM-32-AT-V3.4.0.0&#xff08;内含用户指南, 有AT指令说明&#xff09;的TCP透传设置与使用 设备连接 TTL转USB线, 接ESP32 板 的 GND&#xff0c;RX2&#xff0c; TX2 指令介绍 注意,下面指…

【iOS】KVC的学习

【iOS】KVC的学习 文章目录 【iOS】KVC的学习前言KVC定义KVC设值KVC取值KVC使用keyPathKVC处理异常处理nil异常 KVC的一些应用修改动态的设置值实现高阶的消息传递 小结 前言 笔者简单学习了有关与KVC的相关内容&#xff0c;这里写一篇博客简单介绍一下相关内容。 KVC 定义 KV…

从零到一,监控网关上网设置教程

要让监控网关成功连接互联网&#xff0c;需要正确配置网络设置。监控网关通常位于本地局域网&#xff08;LAN&#xff09;或广域网&#xff08;WAN&#xff09;中&#xff0c;用于连接摄像头、传感器等监控设备&#xff0c;并通过网络上传数据到远程服务器或云平台。以下是监控…

计算机毕业设计 社区医疗服务系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【GMNER】Grounded Multimodal Named Entity Recognition on Social Media

Grounded Multimodal Named Entity Recognition on Social Media 动机解决方法特征抽取多模态索引设计索引生成框架EncoderDecoder 实体定位、实体-类型-区域三元组重建 出处&#xff1a;ACL2023 论文链接&#xff1a;https://aclanthology.org/2023.acl-long.508.pdf code链接…

windows安装docker 本地打包代码

参考文章1&#xff1a;https://gitcode.csdn.net/65ea814b1a836825ed792f4a.html 参考文章2&#xff1a; Windows 安装docker&#xff08;详细图解&#xff09;-CSDN博客 一 下载 Docker Desktop 在官网上下载 Docker Desktop&#xff0c;可以从以下链接下载最新版本&#x…