输入重定向文件名c++

input redirection file name c++

我的程序有几个参数和一个正在重定向的输入文件。我正在解析参数(使用 argc 和 argv)和文件(使用 cin)。但是,我无法显示重定向文件的名称。例如,参数是-

./procsim -r 2 -f 4 -j 3 -k 2 -l 1 < gcc.100k.trace

我解析参数的代码是 -

for (int i = 1; i < argc; ++i)
    {
    if (argv[i][0] == '-')
        {
        if (!strcmp(argv[i], "-r"))
        {
            if (i < argc - 1)
            {
                pipeline_parameters[count++] = atoi(argv[i+1]);
                R = atoi(argv[i+1]);
                i = i+1;
            }
        }

        else if (!strcmp(argv[i], "-f"))
        {
            if (i < argc - 1)
            {
                pipeline_parameters[count++] = atoi(argv[i+1]);
                F = atoi(argv[i+1]);
                i = i+1;
            }
        }

为了解析文件,我使用 cin -

 string line;

while (getline( cin, line))
{
address_arr.push_back(line);
}

我要读文件名,这里是gcc.100k.trace。我怎么做? P.S。 - 我已尝试通过参数进行解析,但找不到它!

编辑: address_arr 是一个整型向量。 pipeline_parameters是一个长度为5的int数组,用来存放参数。 RF 是存储参数的全局变量还有。

您当然不能使用 argcargv 来做到这一点。如果有任何希望,可能是调用 getppid() 来获取您的 shell 的 PID,然后读取 /proc/PPID/fdproc/PPID/fdinfo 并查看那里打开了哪些文件.

这将是一个巨大的讨厌的 hack,并且在生产应用程序中没有立足之地。您需要这样做的理由可能不够充分,而且目前还没有其他程序这样做。