【问题标题】:how can I pass a parameter to the system function with quotes?如何使用引号将参数传递给系统函数?
【发布时间】:2020-11-02 15:09:12
【问题描述】:

我正在尝试减少顶部函数的列并将其保存到文件中,但我不知道如何使用带引号的 system() 函数。我是这样做的:

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

我很确定问题出在引号上,有人可以帮助我吗?

【问题讨论】:

标签: c++ linux system


【解决方案1】:

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

这应该可行:

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());

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多