进程替换命名管道转换
Process Substitution to named pipe conversion
我是 Busybox 的新手,我发现进程替换在 Busybox 中不起作用。谁能帮助我使用命名管道在 Busybox 中模拟以下命令。
cat <(echo 0 0 1 /config/camConfig.txt 0 3840 2160 8 0 0) - | ~/tools/camera/stream
我正在开发一个在 Busybox 上 运行 的相机。为了流式传输相机进行分析,我需要启动一个应用程序 /tools/camera/stream,但每次我 运行 这个应用程序时,我都需要将相同的信息集插入到手动申请,然后它会开始流,分析完成后我需要在申请中输入数字13来停止相机。所以我想自动化这个任务,我试过上面的命令。后来我发现我不能这样做。我尝试了以下命令,但只有第一个输入 0 被传递给应用程序。
[ -p ~/config/settings.txt ] || mkfifo ~/config/settings.txt
echo 0 0 1 /config/camConfig.txt 0 3840 2160 8 0 0 > ~/config/settings.txt &
cat <~/config/settings.txt - | ~/tools/camera/stream
请帮我找到解决办法。
<(...)
是一个 Bash-ism 并且 Busybox 只支持普通的 sh 语法。一种与 sh 兼容的方法是将 运行 echo
和 cat
放在大括号内,并将结果 compound command 传递给您的工具。
{ echo 0 0 1 /config/camConfig.txt 0 3840 2160 8 0 0; cat; } | ~/tools/camera/stream
我什至会在 Bash 中这样做,因为它更直接,因此更有效地表达了您正在尝试做的事情。
就其价值而言,如果您从最后一行中删除 <
重定向,我认为您的解决方案会奏效。
cat ~/config/settings.txt - | ~/tools/camera/stream
为什么不用<
?您正在尝试 cat
管道和标准输入。如果您使用 <
导致 settings.txt
被重定向到标准输入,这与 -
冲突并且意味着标准输入不再连接到键盘。
此外,我可能会将管道固定在 /run
中,它适用于 ephemeral runtime files——非常适合管道。 (或者,/var/run
或 /tmp
。)我会给它一个 .fifo
扩展名以表明它不是常规文件。
我是 Busybox 的新手,我发现进程替换在 Busybox 中不起作用。谁能帮助我使用命名管道在 Busybox 中模拟以下命令。
cat <(echo 0 0 1 /config/camConfig.txt 0 3840 2160 8 0 0) - | ~/tools/camera/stream
我正在开发一个在 Busybox 上 运行 的相机。为了流式传输相机进行分析,我需要启动一个应用程序 /tools/camera/stream,但每次我 运行 这个应用程序时,我都需要将相同的信息集插入到手动申请,然后它会开始流,分析完成后我需要在申请中输入数字13来停止相机。所以我想自动化这个任务,我试过上面的命令。后来我发现我不能这样做。我尝试了以下命令,但只有第一个输入 0 被传递给应用程序。
[ -p ~/config/settings.txt ] || mkfifo ~/config/settings.txt
echo 0 0 1 /config/camConfig.txt 0 3840 2160 8 0 0 > ~/config/settings.txt &
cat <~/config/settings.txt - | ~/tools/camera/stream
请帮我找到解决办法。
<(...)
是一个 Bash-ism 并且 Busybox 只支持普通的 sh 语法。一种与 sh 兼容的方法是将 运行 echo
和 cat
放在大括号内,并将结果 compound command 传递给您的工具。
{ echo 0 0 1 /config/camConfig.txt 0 3840 2160 8 0 0; cat; } | ~/tools/camera/stream
我什至会在 Bash 中这样做,因为它更直接,因此更有效地表达了您正在尝试做的事情。
就其价值而言,如果您从最后一行中删除 <
重定向,我认为您的解决方案会奏效。
cat ~/config/settings.txt - | ~/tools/camera/stream
为什么不用<
?您正在尝试 cat
管道和标准输入。如果您使用 <
导致 settings.txt
被重定向到标准输入,这与 -
冲突并且意味着标准输入不再连接到键盘。
此外,我可能会将管道固定在 /run
中,它适用于 ephemeral runtime files——非常适合管道。 (或者,/var/run
或 /tmp
。)我会给它一个 .fifo
扩展名以表明它不是常规文件。