如何将一个非常长的参数列表传递给程序
How to pass a very very long list of arguments to a program?
我正在编写和运行程序,需要向这些程序传递一长串数据文件进行分析,有时需要几十万。问题是,参数列表可能太长,以至于系统(Unix)拒绝运行它,输出:
bash: ./yourProgram: Argument list too long
有没有一个环境变量我可以改变以绕过这个障碍?
我能想到的唯一解决方案是将我的程序列表写在一个单独的文件中(使用ls ... >
),然后逐行读取每个文件。你知道什么更简单的吗?
ps:如果重要的话,我的程序是用C++编写的
最好将环境变量定义为以空格分隔的项目列表,例如,定义为
export MYLIST=a b ab cd ef
在您的程序中,使用getenv("MYLIST")以char*形式获取值,并标记化以获取单个值
我会将其作为stdin传递。。
echo "file1 file2 file3" | ./program
如何将一个非常长的参数列表传递给程序?
- 将参数放在文件中
-
在启动时,将文件重定向到应用程序的标准输入
bash$ echo "arg1 arg2 arg3 ... argn" >> inputs.txt bash$ ./yourProgram < inputs.txt
这具有存储参数的优点(因此,对于后续执行,您只需要运行第二行)。
相关文章:
- 概念中的cv限定符需要表达式参数列表
- 在卡萨布兰卡形成编码参数的列表
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 列表参数的类型定义
- std::vector 没有重载函数的实例与参数列表匹配
- 模板参数列表中的 false 在模板初始化期间计算为什么?
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- 构造函数/函数声明参数列表中的统一初始化
- 模板化检查是否存在带有参数列表的类成员函数?
- 没有函数模板的实例"max"与参数列表参数类型匹配(int、int)
- 具有泛型列表参数和委托的函数
- 海湾合作委员会拒绝列表参数的初始化
- 为什么初始化构造函数列表参数时会发生异常?
- 简单变量列表参数C++
- 具有列表参数C++11/C++14样式的求和函数
- c++初始化列表——参数来自构造函数体本身
- 一种更有效的处理循环内列表参数的方法