2014-09-25 57 views
0

我正在編寫和運行我需要傳遞一長串數據文件進行分析的程序,有時數十萬個。問題是,參數列表可以這麼久,該系統(UNIX)拒絕運行,輸出:如何將非常長的參數列表傳遞給程序?

bash: ./yourProgram: Argument list too long 

是否有一個環境變量,我可以改變繞過這個障礙?

我能想到的唯一解決方案是將我的程序列表寫入單獨的文件(使用ls ... >),然後逐行讀取每個文件。你知道更簡單嗎?

PS:我的計劃是用C++編寫,如果它的事項

+1

通過'stdin'而不是在參數列表中發送文件列表時出現了什麼問題?只是好奇。 – WhozCraig 2014-09-25 09:36:40

+1

這是一個荒謬的做法。正如WhozCraig所說,使用'stdin'。這就是它的目的。 – 2014-09-25 09:42:50

+0

確實,我不知道'stdin',只是實現了它。不確定它是否值得分享。 – 2014-09-25 10:37:44

回答

1

如何將非常長的參數列表傳遞給程序?

  1. 發生在一個文件
  2. 重定向文件的應用程序的標準輸入的參數,在啓動時

    bash$ echo "arg1 arg2 arg3 ... argn" >> inputs.txt 
    bash$ ./yourProgram < inputs.txt 
    

這有存儲你的論點的優勢(所以對於後續的執行,你只需要運行第二行)。

2

最好有與值項的空間分隔的列表,例如定義的環境變量,定義爲

export MYLIST=a b ab cd ef 

在你的計劃,用getenv(「MYLIST」)來獲取價值爲char *和令牌化以獲得單個值

2

我只想把它作爲標準輸入..

echo "file1 file2 file3" | ./program