我的理解是,使用open()打开一个新文件时,不能控制由操作系统分配的文件描述符(整数)。那么在bash shell中,如何使用类似的命令分配特定的文件描述符呢?
exec 5>&1
(我想我可以通过阅读bash源代码找出答案...)
我的理解是,使用open()打开一个新文件时,不能控制由操作系统分配的文件描述符(整数)。那么在bash shell中,如何使用类似的命令分配特定的文件描述符呢?
exec 5>&1
例如:每个可能以文件描述符号码为前缀的重定向可以改为以形式为{varname}的单词为前缀。在此情况下,对于除>&-和<&-之外的每个重定向运算符,shell将分配一个大于10的文件描述符并将其分配给{varname}。如果>&-或<&-之前跟着{varname},则varname的值定义要关闭的文件描述符。
#!/bin/bash
exec {NEW_STDOUT}>&1
echo "Hello" >&$NEW_STDOUT
exec {NEW_STDOUT}>&-
请参考 Unix 系统调用 dup2。
dup2
。并且在它fork子进程来运行命令时,小心不要有任意文件描述符打开。 - R.. GitHub STOP HELPING ICE