C++ 如何将非常长的参数列表传递给程序?
我正在编写和运行程序,我需要向这些程序传递一长串数据文件以供分析,有时是几十万。问题是参数列表可能太长,以至于系统(Unix)拒绝运行它,输出:C++ 如何将非常长的参数列表传递给程序?,c++,command-line-arguments,C++,Command Line Arguments,我正在编写和运行程序,我需要向这些程序传递一长串数据文件以供分析,有时是几十万。问题是参数列表可能太长,以至于系统(Unix)拒绝运行它,输出: bash: ./yourProgram: Argument list too long 是否有一个环境变量可以更改以绕过此障碍 我能想到的唯一解决方案是将我的程序列表写在一个单独的文件中(使用ls…>),然后逐行读取每个文件。你知道更简单的吗 PS:我的程序是用C++编写的,如果它的值最好用一个环境变量定义为空间分隔的条目列表,例如,定义为 expo
bash: ./yourProgram: Argument list too long
是否有一个环境变量可以更改以绕过此障碍
我能想到的唯一解决方案是将我的程序列表写在一个单独的文件中(使用ls…>
),然后逐行读取每个文件。你知道更简单的吗
PS:我的程序是用C++编写的,如果它的值
最好用一个环境变量定义为空间分隔的条目列表,例如,定义为export MYLIST=a b ab cd ef
在您的程序中,使用getenv(“MYLIST”)将值获取为char*,使用tokenize获取单个值更好的方法是将环境变量定义为以空格分隔的项目列表,例如,定义为
export MYLIST=a b ab cd ef
在您的程序中,使用getenv(“MYLIST”)将值获取为char*,并使用tokenize获取单个值我只是将其作为stdin传递
echo "file1 file2 file3" | ./program
我会把它作为标准传递
echo "file1 file2 file3" | ./program
如何将非常长的参数列表传递给程序
bash$ echo "arg1 arg2 arg3 ... argn" >> inputs.txt
bash$ ./yourProgram < inputs.txt
bash$echo“arg1 arg2 arg3…argn”>>inputs.txt
bash$./yourProgram
bash$ echo "arg1 arg2 arg3 ... argn" >> inputs.txt
bash$ ./yourProgram < inputs.txt
bash$echo“arg1 arg2 arg3…argn”>>inputs.txt
bash$./yourProgram
这样做的好处是可以存储参数(以便后续执行时只需运行第二行)。通过
stdin
而不是在参数列表上发送文件列表会有什么问题吗?只是好奇。这是一种荒谬的方法。正如WhozCraig所说的,使用stdin。这就是它的目的。事实上,我不知道stdin,只是实现了它。不确定它是否值得共享。通过stdin
而不是在参数列表中发送文件列表有什么问题吗?只是好奇。这是一种荒谬的方法。正如WhozCraig所说的,使用stdin。这就是它的目的。事实上,我不知道stdin,只是实现了它。不确定是否值得分享。