2016-04-25 8 views
1

Ich bin auf der Suche nach einer Möglichkeit, wie (Kernel?) Nachrichten loswerden, die in meiner Ncurses App angezeigt werden. Ich habe die App selbst geschrieben, daher würde ich eine API bevorzugen, die diese Nachrichten nach/dev/null umleitet. Ich meine Nachrichten wie, ein USB-Stick, der eingelegt ist.ncurses deaktivieren Kernelmeldungen auf dem Konsolenbildschirm?

ich das hinzufügen versucht, aber leider funktioniert es nicht

freopen("/dev/null", "w", stderr); 

Ich bin X nicht läuft, ncurses nur von der Konsole direkt.

Ich meine Nachrichten wie, ein USB-Stick, der eingefügt wird.

Danke!

UPDATE 1: Jemand stimmt ab, diese Frage zu schließen, weil es nicht mit der Programmierung zusammenhängen würde. Aber es ist, ich schrieb die Ncurses App selbst, ich bin auf der Suche nach einer Möglichkeit, wie Sie die Kernel-Nachricht deaktivieren. Ich habe die Frage aktualisiert.

UPDATE 2: Lassen Sie mich erklären, was ich tue, und was ist das Problem im Detail:

I Tiny Core Linux bin mit, das ist nach dem Stiefel beginnt (selbst geschrieben) ncurses Programm . Wenn Sie nun zum Beispiel ein USB-Laufwerk anschließen, wird eine Nachricht (ich vermute Kernel) über meinem Programm angezeigt. Ich denke, die Nachricht wird direkt in den Framebuffer geschrieben. Ich benutze TC 5.x, da ich 32 Bit benötige, ich laufe als root und habe vollen Zugriff auf das Betriebssystem.

+0

Gehen Sie zu einer anderen virtuellen Konsole, zum Beispiel mit STRG-ALT-F2, und loggen Sie sich dort ein? –

+0

@ ThomasPadron-McCarthy, unglücklicherweise ist eine KIOSK-App, so sehe ich nicht, wie man das zur Arbeit bringt? – Roger

+0

'dmesg --console-off'? –

Antwort

1

Sie sollten openvt verwenden können, damit Ihr Programm auf einem neuen virtuellen Terminal ausgeführt wird.

Ich werde auch bemerken, dass es möglich sein sollte, Steuerelement für die VTs selbst einzubetten, wenn Sie die externe Abhängigkeit lieber trennen möchten, aber beachten Sie, dass Strukturen zwischen Kernel-Versionen möglicherweise nicht stabil sein und möglicherweise Neukompilierung erfordern. Sehen Sie die KBD project's Quellen, speziell openvt.c, um zu sehen, wie es funktioniert.

0

Versuchen Sie, den Kernel durch Boot-Parameter mit der Option zu konfigurieren:

loglevel = 3 (oder ein niedrigerer Wert)

 0 (KERN_EMERG)  system is unusable 
     1 (KERN_ALERT)  action must be taken immediately 
     2 (KERN_CRIT)  critical conditions 
     3 (KERN_ERR)  error conditions 
     4 (KERN_WARNING) warning conditions 
     5 (KERN_NOTICE)  normal but significant condition 
     6 (KERN_INFO)  informational 
     7 (KERN_DEBUG)  debug-level messages 

Quelle: https://www.kernel.org/doc/Documentation/kernel-parameters.txt

Siehe auch: Change default console loglevel during boot up

+0

Ich habe es bereits auf Loglevel = 1, im laufenden Tiny-Core-Linux. Ich habe keine Wirkung. – Roger

0

Es kann unmöglich sein, einen anderen Prozess mit ausreichendem Zugriff vom Schreiben auf/dev/console zu blockieren, aber Sie können möglicherweise neu definieren ne Konsole als ein anderes Gerät, beim Booten von Konsoleneinstellung = ttyS0 (erste serielle Schnittstelle) finden Sie unter:

https://unix.stackexchange.com/questions/60641/linux-difference-between-dev-console-dev-tty-and-dev-tty0

Auch wenn wir genau wissen, welche Software ist die Nachricht sendet es möglich sein kann, es neu zu konfigurieren (möglicherweise dynamisch), aber es würde Ihnen helfen, die Version und die Edition von Tiny Core Linux zu kennen, die Sie benutzen?

z. diese Website eine „Core“ hat, „TinyCore“ und „Coreplus“ Versionen 1.x bis zu 7

http://tinycorelinux.net/downloads.html

Dies würde helfen, genau das gleiche Verhalten reproduzieren und mögliche Lösungen zu testen.