Ich schreibe eine Aufgabe, die ein anderes Programm printf()
interpositionieren. Es forks ein Kind Prozess und und leiten alle die Ausgabe des Programms auf den Kind-Prozess. Der Code unten ist was ich geschrieben habe, was noch nicht gelaufen ist und ich muss diese Funktion hinzufügen, denke ich.Wie verzweigen Sie einen Child-Prozess und leiten Sie alle Ausgaben des Programms an den Child-Prozess um?
int printf(char* format, ...)
{
int res;
static void *(*mallocp)(size_t size);
char *error;
if (!mallocp) {
mallocp = dlsym(RTLD_NEXT, "printf");
if ((error = dlerror()) != NULL) {
fputs(error, stderr);
exit(1);
}
}
va_list args;
va_start(args, format);
res=mallocp(format, args);
va_end(args);
return res;
}
Ich finde eine ähnliche Lösung, aber ein wenig anders. Redirect stdin and stdout in child in c Ich weiß es nicht wirklich, nachdem ich einen Kindprozess abzweigen und Pipe gut konfigurieren, wie kann ich Elternprozesse mit dem System "printf" mallocp
weitermachen lassen, um den stdout zu geben, der zum Kindprozess umgeleitet werden sollte. (kann in diesem Beispiel etwas wie system("./calc/calc ");
sein) Ich bin neu in diesem Bereich. Kannst du es mir sagen?
BTW, ich weiß nicht, ob ich vermisse die Umsetzung des gesamten Prozesses zu verstehen, weil es eine Frage ist und ich die offizielle Lösung nicht kenne.
Was ist die _actual problem_ Sie auf diese Weise zu lösen versuchen? –