首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在重定向文件描述符时不需要打开它们吗?

在重定向文件描述符时不需要打开它们吗?
EN

Stack Overflow用户
提问于 2020-08-27 18:53:36
回答 1查看 31关注 0票数 0

我读到过(例如:How do file descriptors work?),要使用文件描述符3-9,我需要先打开它们。尝试在不使用它的情况下使用它们会产生错误:

代码语言:javascript
运行
复制
function f()
{
    echo hi 1>&3
}
f

输出:

代码语言:javascript
运行
复制
bash: 3: Bad file descriptor

但是,如果我在调用函数时将其重定向,一切似乎都很正常:

代码语言:javascript
运行
复制
f 3>&1

输出:

代码语言:javascript
运行
复制
hi

那么,我是否需要打开文件描述符?

EN

回答 1

Stack Overflow用户

发布于 2020-08-27 19:03:44

是的,您确实需要打开一个新的文件描述符,并且作为一个好的实践,您应该像这样在结束时关闭它:

代码语言:javascript
运行
复制
f() {
    # open fd=3 redirecting to 1 (stdout)
    exec 3>&1

    # redirect stdout to fd=3
    echo hi >&3

    # close fd=3
    exec 3>&-
}

请注意,当您在调用函数的同时运行f 3>&1时,实际上是通过将文件描述符3重定向到&1 (标准输出)来打开它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63614488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档