exec and file descriptor

111 阅读1分钟

exec — execute commands and open, close, or copy file descriptors 都知道 exec 可以执行命令,没想到还可以操作 file descriptors

起因: 在获取 zookeeper 配置时,不想使用 echo conf | nc 127.0.0.1 2181

exec

# open file descriptor, can read and write
[root@node02 ~]# exec 3<> file.txt 
# write file descriptor
[root@node02 ~]# echo aaaa | cat >&3
# read file descriptor
[root@node02 ~]# cat <&3
aaaa
# close file descriptor
[root@node02 ~]# exec 3<&-

echo conf | nc 127.0.0.1 2181 替代方法

echo conf | (exec 3<>/dev/tcp/localhost/2181; cat >&3; cat <&3; exec 3<&-)

Refs

  1. nc alternative (pure bash)
  2. exec