如何在 Linux 下获取 C 中的原始命令行



>我正在尝试创建一个简单的 C 程序来转储原始命令行以调试调用其他程序的程序的输出。 这是我到目前为止所拥有的:

#include <stdio.h> 
int main (int argc, char **argv)
{
    int i;
    for (i = 0; i < argc; i++)
        fprintf (stderr, "%s ", argv[i]);
    fputs ("n", stderr);
    return (0);
}

这种方法有几个问题。 首先,我必须在每个参数后手动插入一个空格。 其次,原始命令上的 qouting 会丢失,因此输入如下:

./argvdump "'something'" """'"'""""other things""""'"'"""

我得到这样的输出:

./argvdump something other things

这对于调试不是很有用,因为我看不到命令行上的实际内容。

有谁知道如何获取实际的原始命令行?

操作系统(或更具体地说是 shell)是执行诸如删除空格和引号之类的操作。无法重建整个命令行,包括所有这些工件。

您可以假设,如果一个argv成员包含一个空格,那么最初它周围有引号......

最新更新