日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux写入二进制文件内容,linux – 从管道读取数据并写入标准输出,中间延迟.必须处理二进制文件...

發布時間:2023/12/3 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux写入二进制文件内容,linux – 从管道读取数据并写入标准输出,中间延迟.必须处理二进制文件... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我現在已經嘗試了大約一個小時來找到解決這個問題的優雅方案.我的目標基本上是編寫帶寬控制管道命令,我可以在各種情況下重復使用(不僅僅是網絡傳輸,我知道scp -l 1234).我想做的是:

>延遲X秒.

>從管道讀取Y量(或者如果沒有足夠的話,小于Y).

>將讀取數據寫入標準輸出.

哪里:

> X可以是1..n.

> Y可以是1個字節,直到某個高值.

我的問題是:

>它必須支持Bash無法很好處理的二進制數據.

我采取或至少考慮過的道路:

>使用while read數據結構,它會過濾您使用的編碼中的所有白色字符.

>使用dd bs = 1 count = 1并循環. dd似乎沒有不同的退出代碼,當有和沒有東西時.這使得更難知道何時停止循環.如果我將標準錯誤重定向到臨時文件,讀取它以檢查某些內容是否已轉移(如在stderr上打印的統計信息中)并重復,則此方法應該有效.但是我懷疑如果在大量數據上使用它會非常慢,如果有可能我想跳過創建任何臨時文件.

關于如何使用Bash盡可能干凈地解決這個問題的任何想法或建議?

解決方法:

它不是很優雅,但您可以使用一些重定向技巧來捕獲由dd復制的字節數,然后將其用作while循環的退出條件:

while [ -z "$byte_copied" ] || [ "$byte_copied" -ne 0 ]; do

sleep $X;

byte_copied=$(dd bs=$Y count=1 2>&1 >&4 | awk '$2 == "byte"{print $1}');

done 4>&1

但是,如果您的意圖是限制傳輸吞吐量,我建議您使用光伏.

標簽:bash,linux

來源: https://codeday.me/bug/20190827/1742693.html

總結

以上是生活随笔為你收集整理的linux写入二进制文件内容,linux – 从管道读取数据并写入标准输出,中间延迟.必须处理二进制文件...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。