小编nd9*_*d97的帖子

Bash - 使用自动文件描述符创建而不是 fifo

一开始,我创建了一个小型服务器,netcat它运行良好:

#!/bin/bash

PORT="1234";

startServer(){
    fifo="fifo/$1";
    mkfifo "$fifo";

    connected="0";

    netcat -q 0 -l -p "$PORT" < "$fifo" | while read -r line; do
        if [ "$connected" == "0" ];then
            #listen for a new connection
            startServer $(($1+1))&
            connected="1";
        fi

        #server logic goes here

    done > "$fifo";

    rm "$fifo";
}

mkdir fifo;
startServer 0;
Run Code Online (Sandbox Code Playgroud)

它使用 fifos 将主循环输出重定向回netcat.

每次调用都会startServer增加 的值$1并创建一个 fifo 文件fifo/$1。

但我想使用bash 的自动文件描述符创建来摆脱fifo文件和startServer.

经过多次尝试,这是我目前修改startServer函数的尝试。我可以从客户端接收线路,但不幸的是它没有收到任何回复。我对出了什么问题感到困惑。

startServer(){ …
Run Code Online (Sandbox Code Playgroud)

bash file-descriptors netcat

5
推荐指数
1
解决办法
1703
查看次数

标签 统计

bash ×1

file-descriptors ×1

netcat ×1