mkfifo

nc 和 fifo 的奇怪不一致输出
mkfifo

nc 和 fifo 的奇怪不一致输出

我有这个确切的代码: #!/bin/bash gtimeout(){ if type -f gtimeout &> /dev/null; then command gtimeout "$@" else timeout "$@" fi } export -f gtimeout; on_first_match(){ local pattern="$1" # The pattern to search for while IFS= read -r line; do if [[ "$l...

Admin

从命名管道接收输入后,无法重定向后台 terraform 进程的标准输出
mkfifo

从命名管道接收输入后,无法重定向后台 terraform 进程的标准输出

我有一个地形文件: terraform { required_version = "1.3.5" } locals { a = "foo" b = "bar" } 在 bash 终端中,我可以这样做: $ echo "local.a" | terraform console "foo" $ echo "local.b" | terraform console "bar" 现在我想做的是启动一个terraform console在后台运行的进程并为其提供命令。 这就是我尝试过的(按照这个答案https://serverfault.com/a...

Admin

加快 bash 脚本中 grep 的使用速度
mkfifo

加快 bash 脚本中 grep 的使用速度

我目前正在创建一个 bash 脚本,该脚本应该处理我的程序之一中的大型日志文件。当我第一次开始时,脚本大约需要 15 秒才能完成,这还不错,但我想改进它。我实现了一个队列,mkfifo并将解析时间减少到 6 秒。我想请教大家有什么办法可以提高脚本的解析速度。 脚本的当前版本: #!/usr/bin/env bash # $1 is server log file # $2 is client logs file directory declare -A orders_array fifo=$HOME/.fifoDate-$$ mkfifo $fifo #...

Admin

太长了;博士
mkfifo

太长了;博士

太长了;博士 $ sudo -u www-data mplayer -slave -input file=/srv/mplayer.fifo -playlist /srv/list & $ lsof /srv/mplayer.fifo | tail +2 mplayer 21059 www-data 4u FIFO 179,2 0t0 2359331 /srv/mplayer.fifo $ cat /var/www/html/test #!/usr/bin/bash mplayer -slave -input file=/sr...

Admin

如何保证只有特定进程从命名管道读取?
mkfifo

如何保证只有特定进程从命名管道读取?

假设在时间 (1),我使用 Python 创建一个命名管道,目标是最终此 Python 进程将向该命名管道写入一些内容。为什么?因为在时间 (2) 时,预计有另一个进程从该命名管道中读取数据。 所以,基本上,它是通过命名管道的 IPC。为什么这么整齐?因为它看起来像一个文件,所以其他只能读取文件的进程可以通过这种命名管道机制作为方便的 IPC 进行通信,而无需重写其他进程。 但有一个问题:假设在时间 (1) 和时间 (2) 之间,一个邪恶进程在该预期进程之前开始从命名管道中读取数据。这样,我的 Python 脚本最终可能会将数据发送到非预期进程。因此,我不关...

Admin

如何将所有输出流传输到另一个进程?
mkfifo

如何将所有输出流传输到另一个进程?

采用以下 Bash 脚本3-output-writer.sh: echo A >&1 echo B >&2 echo C >&3 当然,当. 3-output-writer.sh它运行时会出现错误3: Bad file descriptor,因为 Bash 不知道如何处理第三个输出流。不过,人们可以很容易地做到这一点. 3-output-writer.sh 3>file.txt,并且 Bash 会感到高兴。 但问题是:如何将所有这些都通过管道传输到另一个进程中,以便它可以同时使用这三个进程?除了创建三个命名管...

Admin

Pipe 中的进程一次处理 256 个字节
mkfifo

Pipe 中的进程一次处理 256 个字节

我在 Cyclone 5 上有一个交流程序,它使用连接的 FPGA 进行 FFT。该程序当前从 中获取 256 个字节stdin,然后对其进行处理,给出 FFT 结果stdout。我在 Cyclone 5 上的 Linux bash 中像这样运行它。 ./fpga_fft < input_s16le_audio.pcm 这仅评估前 256 个字节。我该如何执行此操作,以便使用标准输入流连续调用程序,直到读取 *.pcm 文件中的所有内容? 想法: cat input_s16le_audio.pcm|xargs ./fpga_fft 不知何故,需要告...

Admin

使用 Tee 和 Paste 会导致死锁
mkfifo

使用 Tee 和 Paste 会导致死锁

我正在尝试使用 tee 将命令的标准输出重定向到两个“分支”以进行单独处理。最后,我需要使用粘贴合并两个“分支”的结果。我为生产者想出了以下代码: mkfifo a.fifo b.fifo python -c 'print(("0\t"+"1"*100+"\n")*10000)' > sample.txt cat sample.txt | tee >(cut -f 1 > a.fifo) >(cut -f 2 > b.fifo) | awk '{printf "\r%lu", NR}' # outputs ~200 lines...

Admin

为什么命名管道不尊重读取器的附加顺序?
mkfifo

为什么命名管道不尊重读取器的附加顺序?

我有这个测试脚本: #!/usr/bin/env bash fif="foooz"; rm "$fif" ; mkfifo "$fif" ( cat "$fif" | cat && echo "1") & sleep 0.1 ( cat "$fif" | cat && echo "2") & sleep 0.1 ( cat "$fif" | cat && echo "3") & echo "first" > "$fif" wait; 我得到的输出是多种多样的,...

Admin

如何检查文件系统上是否存在命名管道
mkfifo

如何检查文件系统上是否存在命名管道

我尝试使用 -f 标志来测试命名管道是否存在 if [[ ! -f "$fifo" ]]; then echo 'There should be a fifo.lock file in the dir.' > /dev/stderr return 0; fi 这个检查似乎不正确。那么也许命名管道不是文件,而是其他东西? ...

Admin

即使没有读者,如何向命名管道写入内容
mkfifo

即使没有读者,如何向命名管道写入内容

我有这个小测试脚本: rm fooo | cat mkfifo fooo echo 'bar' > fooo # blocks here echo 'done' 我猜测,因为没有人从命名管道中读取数据,所以写入调用将在此之前阻塞。 即使没有读者,是否有某种方法可以写入或检查是否没有读者? ...

Admin

当/而不是写入 FIFO 时运行程序?
mkfifo

当/而不是写入 FIFO 时运行程序?

我有一个程序,每秒将数据写入 FIFO。现在我想更改其中一些数据并将其写入另一个 FIFO。 最好的方法是什么?我可以以某种方式将其直接传送到我的程序吗(我无法控制原始程序/源代码)?或者我是否必须创建一个在后台运行并不断轮询 FIFO 以获取新输入的程序? ...

Admin

为什么模式为 1755 的 mkfifo 不向用户授予读取权限和粘性位?
mkfifo

为什么模式为 1755 的 mkfifo 不向用户授予读取权限和粘性位?

我正在创建一个服务器和客户端的情况,我想创建一个管道以便它们可以进行通信。 我使用以下命令在服务器代码中创建了管道 mkfifo("fifo",1755);: 1 只有创建的用户和 root 才能删除或重命名它, 7 用于向用户提供读、写和执行权限,以及 5 对于组和其他组来说,只给他们读取和执行的权限。 问题是,稍后在服务器代码中,我打开 fifo 来读取它open("fifo",O_RDONLY);,但是当我执行它时,它向我显示一个错误,拒绝我访问 fifo。 我去看了管道fifo的权限,它是 p-wx--s--t这样说的: p代表管...

Admin

mkfifo 复制/移动文件
mkfifo

mkfifo 复制/移动文件

是否可以在 Linux 中使用 mkfifo(命名管道)来复制文件? 例如:我正在从 tar 存档中提取文件,并且希望将它们立即移动到另一个位置。 ...

Admin

两个命名的 PIPE (PIPE_in/PIPE_out) 通过 `tail -f` 连接起来 |发送到 PIPE_in 的字符串未到达 PIPE_out
mkfifo

两个命名的 PIPE (PIPE_in/PIPE_out) 通过 `tail -f` 连接起来 |发送到 PIPE_in 的字符串未到达 PIPE_out

1.创建命名 PIPE,pipe_in并pipe_out运行: $ mkfifo pipe_in $ mkfifo pipe_out 2.连接pipe_in到pipe_out: TERM0: $ tail -f pipe_in > pipe_out 3.发送字符串hello world!到pipe_in并期望它到达pipe_out: TERM1: $ tail -f pipe_out TERM2: $ echo "hello world!" > pipe_in pipe_out如果我在 中终止命令,我只能看到到达的字符串2.。这...

Admin