我有一个命令行实用程序,它能够通过标准输入接收图像并将其转换为不同的格式并将其输出到标准输出。
我在程序中使用它,但是每次运行它时,都需要调用一个子进程,这非常慢。
所以我想知道是否有一种方法,最好使用 systemd,将这个命令行程序变成一个保留在内存中的“服务器”,并且能够以某种方式接收图像数据并输出它?
答案1
- 您当然可以提前启动程序,但不向其标准输入发送任何内容然而;然后,当您需要它时,它已经开始了。当然,当你“使用”完它之后,这个进程就会死掉,你需要启动另一个进程。但假设转换和写入文件也不是瞬时的,您可以已经开始下一个过程并为后续图像做好准备。事实上,您可以有一个等待进程池。 Linux 网络服务器早期的相当标准的技术——“工作进程”。 (这一切与 systemd 无关。)
- 这是一个图书馆。正确的做法是不要将数据移交给单独的进程,如果这种移交的成本很高(不知怎的,我怀疑情况确实如此 - 是的,进程创建成本很高,但 Linux 会缓存您的可执行文件......)。相反,只需直接使用程序中的 caif 库即可转换数据。这就是图书馆的用途。