c++ - 如何使用引号将参数传递给系统函数?

标签 c++ linux system

我正在尝试减少顶级函数的列并将其保存到文件中,但我不知道如何使用带引号的 system() 函数。我这样做是这样的:system("top -b n1 | grep \"^ \" | awk '{ printf(\"%s %s %s %s %s %s %s\n\", $1, $2, $8, $3, $9, $10, $12); }' >> file我很确定问题出在引号上,有人可以帮助我吗?

最佳答案

问题不在于你的报价。首先,您缺少结束") ,并且我不确定您如何尝试使用变量 file但看起来您正在将字符串与变量混合在一起。确保变量 file当您将其添加到命令字符串时,它确实被用作变量。最后,您正在逃避 \n错误的,这会弄乱你的输出。您应该转义该反斜杠,因此您需要输入 \\n结束 \n在你的 awk 命令中。
这应该有效:

string file = "test.txt"; 
system((string("top -b n1 | grep \"^ \" | awk '{ printf(\"%s  %s  %s  %s  %s  %s  %s\\n\", $1, $2, $8, $3, $9, $10, $12); }' >> ") + file).c_str());

关于c++ - 如何使用引号将参数传递给系统函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64648111/

相关文章:

linux - bash - 将命令与文件进行比较(特定的)

linux - .double 数组到 sse 向量和对它们的操作

c# - 使用System.Net.Mail.MailMessage时设置 "From"地址?

c - 如何在c中获取system()命令的状态

c++ - 为什么 NMake 生成器将 C 文件的 .obj 文件放在 C++ 目录以外的目录中

c++ - QSort 无法正确排序,除非之后额外排序一次

c++ - Windows 上的直接文件系统函数调用

c++ - 使用已删除的 shared_ptr 中的原始指针的未定义行为?

linux - 同时对同一目的地进行 rsync

c# - 从 USB 运行 Visual Studio 2012 Express c#