C++ 如何将非常长的参数列表传递给程序?

C++ 如何将非常长的参数列表传递给程序?,c++,command-line-arguments,C++,Command Line Arguments,我正在编写和运行程序,我需要向这些程序传递一长串数据文件以供分析,有时是几十万。问题是参数列表可能太长,以至于系统(Unix)拒绝运行它,输出: bash: ./yourProgram: Argument list too long 是否有一个环境变量可以更改以绕过此障碍 我能想到的唯一解决方案是将我的程序列表写在一个单独的文件中(使用ls…>),然后逐行读取每个文件。你知道更简单的吗 PS:我的程序是用C++编写的,如果它的值最好用一个环境变量定义为空间分隔的条目列表,例如,定义为 expo

我正在编写和运行程序,我需要向这些程序传递一长串数据文件以供分析,有时是几十万。问题是参数列表可能太长,以至于系统(Unix)拒绝运行它,输出:

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,只是实现了它。不确定是否值得分享。