簡體   English   中英

用C程序替換pipe-shellscript

[英]Replace pipe-shellscript with C-program

我有以下Bash腳本:

cat | command1 | command2 | command3

命令永遠不會改變。

出於性能原因,我想用一個小的C程序替換它,該程序運行命令並相應地創建和分配管道。

有沒有辦法在C中做到這一點?

正如其他人所說,您可能不會獲得明顯的性能優勢。
可以合理地假設您運行的命令大部分時間都在使用,而不是將外殼腳本將它們粘合在一起,因此即使膠合速度變快,它幾乎也不會改變。

話雖如此,如果您想這樣做,則應該使用fork()pipedup2()exec()函數。
fork將為您提供多個過程。
pipe將為您提供一對文件描述符-您寫入的文件描述符可以從另一個文件描述符讀取。 dup2可用於更改文件描述符號。 您可以在一個進程中使用管道的一側並將其變為文件描述符1(stdout),而在另一進程中將其變為文件描述符0(stdin)(不要忘記關閉普通的stdin,stdout)第一)。
exec (或其變體之一)將用於執行程序。

有很多細節需要填寫。玩得開心。

這是一個完成此任務的示例

處理本身沒有性能優勢,初始化只有幾毫秒。 顯然,我們不知道執行此操作的上下文,但是僅使用dash代替bash可能會使您#!的單個字符更改獲得80%的毫秒數#!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM