gpt4 book ai didi

shell - sh:如何避免破坏编号的文件描述符?

转载 作者:行者123 更新时间:2023-12-04 12:49:26 33 4
gpt4 key购买 nike

当我有

  exec 3>>file               # file descriptor 3 now points to file
[ $dryrun ] && exec 3>&1 # or possibly to stdout
echo "running">&3
exec 3>&- # and is now closed

我担心文件描述符 3 可能指向相关函数之外的内容。我该如何处理?
  • 是否有内置 next_available_fd ?
  • 有没有办法将 fd3 复制到变量,然后在函数完成后将其复制回来?
  • 在这种情况下,我应该担心线程和并发写入 fd3 吗?
  • 我在 sh,但也许 bash/ksh/zsh 对此有答案?
  • 最佳答案

    除了使用 exec 重定向函数内的文件描述符之外,您还可以(使用 bash,我还没有尝试使用其他 shell)执行以下操作:

    富(){
    测试 $dryrun && exec 3>&1
    echo 运行 >&3
    } 3>>文件


    更多命令

    在此设置中,“运行”将根据 $dryrun 转到文件或原始标准输出,并且 more_commands 将具有 fd 3,就像在调用 foo 之前一样。

    关于shell - sh:如何避免破坏编号的文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6538199/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com