[英]Replace pipe-shellscript with C-program
我有以下Bash腳本:
cat | command1 | command2 | command3
命令永遠不會改變。
出於性能原因,我想用一個小的C程序替換它,該程序運行命令並相應地創建和分配管道。
有沒有辦法在C中做到這一點?
正如其他人所說,您可能不會獲得明顯的性能優勢。
可以合理地假設您運行的命令大部分時間都在使用,而不是將外殼腳本將它們粘合在一起,因此即使膠合速度變快,它幾乎也不會改變。
話雖如此,如果您想這樣做,則應該使用fork()
, pipe
, dup2()
和exec()
函數。
fork
將為您提供多個過程。
pipe
將為您提供一對文件描述符-您寫入的文件描述符可以從另一個文件描述符讀取。 dup2
可用於更改文件描述符號。 您可以在一個進程中使用管道的一側並將其變為文件描述符1(stdout),而在另一進程中將其變為文件描述符0(stdin)(不要忘記關閉普通的stdin,stdout)第一)。
exec
(或其變體之一)將用於執行程序。
有很多細節需要填寫。玩得開心。
處理本身沒有性能優勢,初始化只有幾毫秒。 顯然,我們不知道執行此操作的上下文,但是僅使用dash
代替bash
可能會使您#!
的單個字符更改獲得80%的毫秒數#!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.