使用管道符号时C程序出错

时间:2014-07-13 09:34:45

标签: c pipe

我在我的C程序中将复制管道符号作为字符串。虽然编译它的工作正常,但执行时我收到以下错误

sh: Syntax error: "|" unexpected

这是代码:

puts("Enter the password");
fgets(buffer, 50, stdin);
strcpy(command, "echo -n ");
strcat(command, buffer);
puts(command);
strcat (command, "| md5sum");
puts(command);
system(command);

基本上我正在尝试为用户输入计算md5sum。

1 个答案:

答案 0 :(得分:1)

fgets包含\ n(在用户输入的末尾)在'缓冲区'中,这会破坏您传递给shell的命令行。在编写命令行之前,您需要删除\ n。

(对于任何认真的工作,最好使用库调用而不是外壳到md5sum(1);例如https://www.openssl.org/docs/crypto/md5.html。)