我在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