2
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");

我正在为我的程序使用管道。我想在 C 中使用以下命令执行此命令execvp

ls -l | awk '{ printf "%-10s %10s %10s %2s %2s \t%s \n", $3, $5,$6,$7,$8,$9 }' 

printf问题是在这种情况下我找不到正确的语法。

谁能指出我的错误是什么?

4

1 回答 1

3

您需要转义命令中的所有反斜杠和双引号:

char* cmd[] = { 
    "awk",
    "{ printf \"%-10s %10s %10s %2s %2s \\t%s \\n\", $3, $5, $6, $7, $8, $9 }",
    NULL
};
于 2013-04-16T18:49:37.293 回答