char* cmd[] = { "awk", "{ printf "%-10s %10s %10s %2s %2s \t%s \n", $3,$5,$6,$7,$8,$9 }", NULL};
execvp(cmd[0], cmd);
perror("execvp of awk failed");
我的程序使用管道。我想使用 execvp
在 C 中执行此命令:
ls -l | awk '{ printf "%-10s %10s %10s %2s %2s \t%s \n", $3, $5,$6,$7,$8,$9 }'
问题是在这种情况下我找不到 printf
的正确语法。
谁能指出我的错误是什么?
最佳答案
您需要转义命令中的所有反斜杠和双引号:
char* cmd[] = {
"awk",
"{ printf \"%-10s %10s %10s %2s %2s \\t%s \\n\", $3, $5, $6, $7, $8, $9 }",
NULL
};
关于c - 在 execvp 中传递 awk(printf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044745/