Ich schreibe eine Anwendung in C++, die das stdout verwenden muss, um Antworten auszugeben (es ist ein CGI-BIN-Daemon vom Apache-Webserver aufgerufen, und der Apache erhält das stdout der Binärdatei als Antwort).Shared Library wird in stdout ausgegeben
Das große Problem ist, dass ich eine gemeinsam genutzte Bibliothek verwende und es gibt auch Protokolle in das stdout aus, diese Protokolle gehen direkt zum HTTP-Client und können die eigentlichen HTTP-Antworten nicht analysieren.
Meine Frage ist, gibt es eine Möglichkeit, die Ausgaben aus der gemeinsam genutzten Bibliothek unterdrücken kann?
PS: Ich bin es auf Linux laufen und mit * .so Bibliotheken
Vielen Dank im Voraus
Sie müssten die Bibliothek mit allen Optionen (oder Code Hacker) neu erstellen, um sie zu unterdrücken. Das heißt, wissen Sie sicher, dass die Bibliothek auf stdout und nicht stderr ausgibt? – mah
Ja, ich bin mir sicher, dass die Bibliothek ausgegeben wird, sie gibt sogar ihren Namen in Logs aus. Nun, es ist eine Drittanbieter-Bibliothek, es ist nicht möglich, sie neu zu erstellen. –
Wenn aus irgendeinem Grund @ JesperJuhls Antwort nicht hilft, könnte eine andere Möglichkeit sein, Ihre CGI-Binärdatei in eine Apache-Seite zu teilen, die diese .so nicht verwendet, und eine sekundäre ausführbare Datei, die das tut; diese sekundäre ausführbare Datei würde mit einem anderen stdout erzeugt werden und einen privaten Kommunikationskanal zu dem primären haben (der dann nur als Relais fungiert). Ziemlich hässlich ... hässlicher, als die dritte Partei aufzuspüren und sie dazu zu bringen, ihre zerbrochene Bibliothek zu reparieren :-) – mah