2014-09-25 68 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 
相关问题