用C程序替换pipe-shellscript

Rob*_*y75 0 c bash pipe

我有以下Bash脚本:

cat | command1 | command2 | command3

命令永远不会改变.

出于性能原因,我想用一个小的C程序替换它,它运行命令并相应地创建和分配管道.

有没有办法在C中做到这一点?

ugo*_*ren 5

正如其他人所说,您可能无法获得显着的性能优势.
假设您运行的命令大部分时间都是合理的,而不是将它们粘合在一起的shell脚本,因此即使胶水变得更快,它也几乎不会改变.

说了这么多,如果你想这样做,你应该使用fork(),pipe,dup2()exec()功能.
fork会给你多个过程.
pipe会给你一对文件描述符 - 你写成一个,你可以从另一个读取. dup2可用于更改文件描述符编号.你可以在一个进程中取一个管道的一边并使它成为文件描述符1(stdout),另一边你可以在另一个进程中创建文件描述符0(stdin)(不要忘记关闭正常的stdin,stdout)第一).
exec(或其中一个变体)将用于执行程序.

有很多细节需要填写.玩得开心.