gpt4 book ai didi

linux - 我如何在 Linux 中创建一个文件,当我打开它时,它实际上正在运行一个进程

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:38 26 4
gpt4 key购买 nike

我有一组 .sph 文件,它们实际上是音频 .wav 文件加上一些标题。我有一个名为 sph2pipe 的程序,它将这些 .sph 文件转换为普通音频 .wav 文件。我想为这些 .sph 文件创建某种符号链接(symbolic link),当我阅读这些链接时,我实际上是在阅读它们的转换版本。像这样:

ln -s "sph2pipe a.sph |" "a.wav"
ln -s "sph2pipe b.sph |" "b.wav"

这样一来,我就不必将所有音频文件都转换为 .wav 文件,而只需创建指向 .sph 文件的链接,我希望它们能够即时转换。

我希望我说清楚了。我在想我正在寻找的是命名管道 ( https://en.wikipedia.org/wiki/Named_pipe ),但这对我来说没有用,因为我需要多次读取 .wav 文件。

EDIT-1:我不必使用命名管道。我只是认为这可能是解决方案。实际上,就我而言,这些 .wav 文件需要多次读取。

EDIT-2:我想知道 Samba(或 gvfs-smb)是如何工作的。所以文件在网络中,但在我的系统中也有一个路径可供它们使用,例如:/run/user/1000/gvfs/smb-share:server=10.100.98.54,share=db/4a0a010a.sph。我可以做这样的事情吗? (我从特定路径读取 .sph 文件,然后出现 .wav 文件:))

EDIT-3:到目前为止我想到了这个:

保持运行.py:

#!/usr/bin/python3

import subprocess

cmd = 'mkfifo 4a0a010a.wav'
subprocess.call(cmd, shell=True)

cmd = 'sph2pipe -f wav 4a0a010a.wv1 > 4a0a010a.wav'
while True:
subprocess.call(cmd, shell=True)

在 shell 中:

./keep_running.py &
play 4a0a010a.wav
play 4a0a010a.wav
play 4a0a010a.wav

我可以根据需要多次使用音频文件。

您认为此实现的局限性是什么?我会受到可以产生的进程数量的限制吗?因为看起来我需要为每个文件生成一个进程。

最佳答案

不要这样做,这是个坏主意。

如果您仍然坚持,也许只是出于好奇,这里有一个概念证明。

mkfifo a.wav
sph2pipe a.sph >a.wav &

现在,结果在 a.wav一次可用,但是一旦您使用了它们,它们就消失了,必须重新创建一个后台进程实例如果您需要重新开始,请开始。

在我看来,一个简单的 Makefile 可以更好地服务于您的用例(创建丢失的文件,重新创建需要更新的文件,可能会在成功创建主要目标时删除临时目标)。

关于linux - 我如何在 Linux 中创建一个文件,当我打开它时,它实际上正在运行一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25581209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com