stdout ausschalten
-
hallo.
ist es möglich die Standartausgabe kurzfristig auszuschalten?
wenn man z.B mit system("befehl");
einen shell-befehl mit einem C-Programm ausführt, werden
alle Fehlermeldungen, die die shell normalerweise ausgibt,
auch ausgegeben...danke im voraus....
-
Ja. Auf dem Knopf steht "power" und er ist irgendwo am Monitor.
-
ich hab ein laptop...
-
Du kannst in system() die Ausgabe des Befehls umleiten, so wie jedem normalen Shell-Befehl auch. Also sowas in der Art von
system("befehl > /dev/null");
Ist vielleicht nicht schön (das gilt für system() allgemein), aber es funktioniert.
-
#include <stdlib.h> int main(void) { system("cd asdad > /dev/null"); return 0; }
Wenn ich folgendes mache wird die Fehlermeldung trotzde ausgegeben. cd gibt auch normalerweise nichts aus...
-
sharp schrieb:
Wenn ich folgendes mache wird die Fehlermeldung trotzde ausgegeben. cd gibt auch normalerweise nichts aus...
Dann ist das, was du umleiten möchtest, nicht die Standardausgabe, sondern die Fehlerausgabe:
// leitet stderr um system("cd asdad 2> /dev/null"); // leitet stdout und stderr um system("cd asdad &> /dev/null");
-
danke. Problem gelöst. aber
system("cd asdad &> /dev/null");
funktioniert bei mir nicht (brauch ich auch nicht...)
-
sharp schrieb:
system("cd asdad &> /dev/null");
funktioniert bei mir nicht
Ups, hast Recht. Das
&>
scheint nur in der Bash zu funktionieren. Das selbe Ziel sollte sich aber mit "cd asdad > /dev/null 2>&1" oder "cd asdad 2> /dev/null > /dev/null" erreichen lassen.
-
wieso leitest du stdout net irgendwo anders um? zB mit dup2()
Müsste doch auch gehen