Linux标准输入、重定向与参数传递

本文探讨Linux中标准输入、重定向和参数传递的概念。通过一个求和程序示例,解释了标准输入重定向为何在某些情况下无效,并分析了程序如何接收来自命令行的参数而非标准输入。文章总结了标准输入、标准输出和标准错误的性质,并指出从终端输入的内容在何时作为“标准输入”或“参数传递”取决于程序启动时的上下文。
摘要由CSDN通过智能技术生成

Linux标准输入、重定向与参数传递

按惯例,每当运行一个新程序时,所有shell都为其打开3个文件描述符,即标准输入、标准输出以及标准错误。如果不做特殊处理,例如就像简单的命令ls,则这三个描述符都链接向终端。大多数shell都提供一种方法,使其中一个或所有这3个描述符都能重新定向到某个文件。
——《UNIX环境高级编程(第三版)》

也就是说,我们可以用文件内容来替代从终端输入的内容,也可以用文件来代替终端接收程序输出的内容。于是,我写了个简单的求两数和的小程序测试重定向功能:

#include <stdio.h>
int main(int argc,char** argv)
{
    int a,b;
    a=argv[1][0]-'0';
    b=argv[2][0]-'0';
    printf("The sum is %d\n.",a+b);
    exit(0);
}

编译,测试:

gcc add.c -o add
./add 1 2

输出:

The sum is 3.

没有问题。

继续测试重定向,测试文件input的内容只有两个数字:

1 2

输入命令:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值