2010-03-12 129 views
7

是否有任何標準輸入長度限制(輸入或輸入速度的數量)?stdin的長度是否有限制?

+5

你爲什麼不發佈代碼給你帶來麻煩 – naumcho 2010-03-12 02:44:51

+0

問題是一般性的。關於主要的概念和概念。 – Rella 2010-03-12 02:47:48

+0

緩衝輸入的數量由操作系統決定,我想。如果緩衝區已滿,則試圖寫入可以/將被阻塞,並且如果緩衝區爲空,嘗試的讀取可以/將被阻止。 (我在這裏猜測)。 – dreamlax 2010-03-12 02:49:16

回答

1

它可能取決於stdin驅動程序!

stdin(作爲一個概念)沒有限制。我期望內核開發者(任何系統的)都做出了一些設計選擇,這些選擇會增加限制。

1

stdin沒有任何長度限制。如果你無法接收大量的數據,那麼你的代碼會產生問題。

+0

以及任何發送數據限制的SPEED? – Rella 2010-03-12 02:56:10

2

根據每個人的其他favorite Q&A site

不應該有到流大小的限制(不管是標準輸入或其他)。然而,你可能想要檢查的是你存儲這些角色的地方......是否有足夠的空間來存儲它們?

儘量只這樣的代碼(不存儲!):

for (;;) { 
    int c = getc(stdin); 
    if (c == EOF) { break; } 
    putc(c, stdout); 
} 

,看看是否有相同的限制。

0

轉移速度有限制。通常,它們與任何「UNIX」管道大致相同。大多數操作系統都提供了更高效的機制,但管道速度相當快......假設您沒有使用printf &等。

6

stdin對長度或速度沒有限制。

如果你想通過stdin獲得千兆字節的數據,你可以,並且你的計算機將盡可能快地提供數據。

1

嘗試:

yes UNIX的y無休止命令輸出行。將它管到一個只讀取stdin並將其放在stdout上的C程序(例如cat,但tr 'y' 'y'也可以)。等到cat崩潰或者您的耐心達到了極限:

yes | cat 

關於速度的因素,限制不受語言或操作系統,但由硬件(CPU,RAM確定,硬盤,SATA,網絡,... )

+0

真的有一切的命令。 – 2010-03-12 09:52:44

+1

當另一個命令需要確認無法禁用時(如硬編碼'rm -i'),它被使用。 – mouviciel 2010-03-12 10:27:12