coprocesses

示例#1
coprocesses

示例#1

我正在玩coprocBash,但我无法理解一些东西。 我从以下示例开始: 示例#1 $ coproc MY_BASH { bash; } [1] 95244 $ echo 'ls -l; echo EOD' >&"${MY_BASH[1]}" $ is_done=false; while [[ "$is_done" != "true" ]]; do > read var <&"${MY_BASH[0]}" > if [[ $var == "EOD" ]]; then > is_done="tru...

Admin

协进程的返回值与返回状态
coprocesses

协进程的返回值与返回状态

我不明白这句话的意思协进程在里面巴什手册页: 由于协进程是作为异步命令创建的,协程命令总是返回成功。协进程的返回状态是“command”的退出状态。 “成功”和“成功”有什么区别返回值和“成功/错误”(0/非0)退出状态?它们的处理方式有何不同巴什?如何才能让他们看出差异呢? ...

Admin

命令替换下的 coproc 和命名管道行为
coprocesses

命令替换下的 coproc 和命名管道行为

我需要在 zsh shell 脚本中创建一个函数,该函数通过命令替换来调用,与对同一命令替换的后续调用进行状态通信。 类似于 C 函数中的静态变量(非常粗略地说)。 为此,我尝试了两种方法 - 一种使用协处理器,一种使用命名管道。命名管道方法,我无法开始工作 - 这很令人沮丧,因为我认为它将解决我在协处理器方面遇到的唯一问题 - 也就是说,如果我从终端进入新的 zsh shell,我似乎不会能够看到父 zsh 会话的 coproc。 我创建了简化的脚本来说明下面的问题 - 如果您对我想要做什么感到好奇 - 它正在向子弹头列车 zsh 主题添加一个新的有状态组...

Admin

使用 coprocess 在 BASH 中编写名称引用变量
coprocesses

使用 coprocess 在 BASH 中编写名称引用变量

我目前尝试使用 coproc 启动后台进程并更新名称引用变量。我的不工作代码: function updateVariable(){ local -n myVar="${1}" #i=0; while : do sleep 1 myVar="ok" #((++i)) done } capture=""; coproc mycoproc { updateVariable capture; } 这并不像我预期的那样工作。echo $capture只是空的。我希望它是“好的”。 多谢! ...

Admin

结合使用 cvlc 和 coproc
coprocesses

结合使用 cvlc 和 coproc

我正在尝试使用.mp3的虚拟接口(vlc即 )向文件描述符文件提供cvlc,以便动态添加到播放列表或使用新数据(新.mp3文件)覆盖整个文件描述符: coproc cvlc cvlc filename.mp3 >& OR >>&"${COPROC[1]}" 这将运行,但将等待提示返回,这不是预期的,因为它将输出定向到文件描述符。 ...

Admin

bash 脚本中的 Coproc
coprocesses

bash 脚本中的 Coproc

我正在尝试编写一个简单的 shell 脚本,使我的树莓派的蓝牙可被发现,但我遇到了一些问题。我的树莓派运行的是 Raspbian。 通过命令行运行它效果很好: coproc bluetoothctl echo -e 'discoverable on' >&${COPROC[1]} 但是当我创建 shell 脚本时执行以下操作: #! /bin/bash coproc bluetoothctl echo -e 'discoverable on' >&${COPROC[1]} 使用命令行“bash test_script...

Admin

是否可以有多个并发协进程?
coprocesses

是否可以有多个并发协进程?

这意图下面的测试脚本1的目的是启动一个“外部”协进程(正在运行seq 3),在循环中从此协进程读取数据while,并且对于读取的每一行,打印一行标识外部循环的当前迭代,启动“内部” coprocess(也在运行seq,带有新参数),在嵌套的 while 循环中读取此内部协进程,然后清理此内部协进程。嵌套的 while 循环为它从内部协进程读取的每一行打印一些输出。 #!/bin/bash # filename: coproctest.sh PATH=/bin:/usr/bin coproc OUTER { seq 3; } SAVED_OUTER_PID...

Admin

通过前台终端访问在后台运行命令
coprocesses

通过前台终端访问在后台运行命令

我正在尝试创建一个可以运行任意命令、与子进程交互(具体细节省略)的函数,然后等待它退出。如果成功,键入的run <command>行为看起来就像裸露的<command>. 如果我不与子进程交互,我会简单地写: run() { "$@" } 但因为我需要在它运行时与其交互,所以我使用coproc和进行了更复杂的设置wait。 run() { exec {in}<&0 {out}>&1 {err}>&2 { coproc "$@" 0<&$in ...

Admin

bash coprocess 是如何实现流水线化的?
coprocesses

bash coprocess 是如何实现流水线化的?

注意这段话来自男人狂欢(强调我的): 协进程 coprocess 是一个 shell 命令,前面带有 coproc 保留字。协进程在子 shell 中异步执行,就好像命令已使用 & 控制运算符终止一样,带双向管 在执行 shell 和协进程之间建立。 现在,正如我们所知,与其他 *nix 系统不同,Linux 管道是单向的(也参考人管(7),可移植性部分)。那么 bash coproces 如何实现 Linux 上没有的“双向管道”呢? ...

Admin

bash 中的进程间通信在多个后台函数中读取命令
coprocesses

bash 中的进程间通信在多个后台函数中读取命令

我试图让以下代码从主输入中读取,然后在一个函数中读取该代码,然后能够将其发送到另一个函数的输入中,但我无法使其正常工作,并且需要将其输入到读取命令以便能够被解析 coproc test { for i in $(seq 0 9) do sleep 1 echo $i done } input() { while read -u 3 gr do echo sent: $gr # this should send to output function done } output() { while...

Admin

为什么这个 gawk 协进程挂起?
coprocesses

为什么这个 gawk 协进程挂起?

在尝试的同时在 bash shell 中转换日期, 我试过GNU awk 的协进程功能: gawk -F, -v cmd='date +"%Y-%m-%d %H:%M:%S" -f-' '{print $5 |& cmd; cmd |& getline d; $5 = d}1' foo 该命令挂起。我认为这可能是因为date正在等待读取整个输入,所以我尝试关闭管道的发送一半: gawk -F, -v cmd='date +"%Y-%m-%d %H:%M:%S" -f-' '{print $5 |& cmd; close(cmd...

Admin

zsh,zpty:如何读取进程退出后的输出?
coprocesses

zsh,zpty:如何读取进程退出后的输出?

使用以下命令启动一些命令zpty: zpty -d x ; zpty x 'echo hi' ; sleep 1 既然它已经退出,我如何读取它的输出? zpty -r x 返回 2,根据联机帮助页,这种行为似乎是预期的。 ...

Admin

是coproc与&?
coprocesses

是coproc与&?

我读过这与在子 shell 进程中执行的$coproc < command >不同。$< command > &coproccommand 但当我测试它时,它的工作原理就像$< command > &.测试如下: 第一:测试 的行为$< command > &。 运行$nano &​终端1 在另一个 tty 上,输出$ps -t tty1 --forest表明 nano 进程是 -bash 进程的子进程(登录 bash sh...

Admin