Im arbeiten in c (mehr oder weniger zum ersten Mal) für uni, und ich brauche, um eine MD5 aus einem Zeichen-Array zu generieren. Die Zuweisung gibt an, dass dies durch Erstellen einer Pipe und Ausführen der md5
Befehl auf dem System.
Ich bin schon so weit gekommen:
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);
}
Jetzt funktioniert dies perfekt (für einen anderen Teil der Zuordnung, die die MD5 für eine Datei erhalten muss), aber ich kann nicht trainieren, wie eine Zeichenfolge in es zu verlegen.
Wenn ich es richtig verstehe, muss ich etwas tun wie:
FILE * file = popen("/bin/cat", "w");
fwrite("hello", 5, file);
pclose(file);
Das würde, denke ich, cat ausführen und "hallo" über StdIn an es übergeben. Ist das richtig?
0 Stimmen
Haben Sie den zweiten Blockcode ausgeführt? Dann wüssten Sie, dass fwrite einen weiteren Parameter benötigt, nämlich die Größe eines Elements Ihrer Zeichenkette. Sie hätten also wahrscheinlich fwrite("hello",sizeof(char),5,file); ausprobiert und festgestellt, dass dies tatsächlich funktioniert. Ob Sie es auf diese Weise tun sollten oder durch einen Aufruf von pipe() und dann fork() ein Kind, schließen Sie die Enden der Pipe, und senden Sie Informationen mit einem write() und sprintf() ist eine andere Idee.