我在c中工作(或多或少是第一次)uni,我需要从一个字符数组中生成一个MD5。该分配指定这必须通过创建管道并在系统上执行命令md5
来完成。如何在C中将字符串传入popen()命令?
我这个地步得到:
FILE *in;
extern FILE * popen();
char buff[512];
/* popen creates a pipe so we can read the output
* of the program we are invoking */
char command[260] = "md5 ";
strcat(command, (char*) file->name);
if (!(in = popen(command, "r"))) {
printf("ERROR: failed to open pipe\n");
end(EXIT_FAILURE);
}
现在这个完美的作品(为此需要得到MD5的文件分配的另一部分),但我不能锻炼如何管串进去。
如果我理解正确的,我需要做的是这样的:通过标准输入
FILE * file = popen("/bin/cat", "w");
fwrite("hello", 5, file);
pclose(file);
其中,我认为,将执行猫,并通过“打招呼”了进去。这是正确的吗?
你有没有运行那第二块代码?如果你有,你会意识到,fwrite接受另一个参数,这是你的字符串的一个元素的大小,所以你可能已经试过fwrite(“hello”,sizeof(char),5,file);并发现这确实有效。无论你是否应该这样做,或者通过调用pipe()然后fork()一个孩子,关闭管道的末端,并用write()和sprintf()发送信息是一个不同的想法。 – prelic 2010-11-27 10:21:58