Wie kann Linux mit C ++ oder Qt ohne Aufruf von "system ()" heruntergefahren werden?

7

Ich möchte ein Embedded Linux herunterfahren, wenn eine Schließen-Schaltfläche auf der Benutzeroberfläche gedrückt wird. Ich weiß, dass ich es mit einem Aufruf von system machen kann:

%Vor%

Ref: Link

Aber da ich weiß, dass die Verwendung von system nicht ratsam ist, würde ich gerne wissen, ob es in C ++ einen anderen Weg gibt, dies zu tun (wenn es auch einen bestimmten Weg gibt, dies mit Qt zu tun, möchte ich auch kenne es obwohl eine allgemeine C ++ Methode wichtiger ist).

    
Momergil 02.03.2015, 14:44
quelle

5 Antworten

13

Unter Linux können Sie den Neustart-Systemaufruf zum Ausschalten, Anhalten oder Neustarten aufrufen. Das folgende Snippet zeigt, wie man eine Maschine ausschaltet, aber beachte, dass es natürlich nur unter Linux funktioniert:

%Vor%

Natürlich benötigen Sie ausreichende Berechtigungen, um diesen syscall zu verwenden.

    
tux3 02.03.2015 14:48
quelle
6

Unter glibc brauchst du:

%Vor%

Auch hier musst du wie immer mit ausreichenden Privilegien rennen.

    
Nathan Phillips 27.07.2015 12:13
quelle
4

Wenn Ihr System über systemd verfügt, können Sie logind Funktionalität über D-Bus . Qt Lösung ist die folgende (gerade getestet):

%Vor%

Es ist auch möglich, eine Datei /etc/polkit-1/localauthority/50-local.d/10-enable-shutdown.pkla hinzuzufügen, um die Anforderung der interaktiven Authentifizierung zu unterdrücken:

%Vor%     
Orient 05.09.2017 08:38
quelle
2

Der Qt-Weg besteht darin, QProcess zu verwenden, um den Shutdown-Befehl auszuführen:

%Vor%     
Nejat 02.03.2015 17:19
quelle
1

Wenn Ihr Problem darin besteht, dass system () nicht sicher ist, können Sie

verwenden %Vor%

Dann können Sie sicher sein, dass Sie die richtige Shutdown-Funktion verwenden.

    
martinsurleweb 02.03.2015 15:23
quelle

Tags und Links