Do these GUI-based applications also execute the same command in the background?
Oui et non. Ils écrivent dans la base de données de paramètres dconf
, mais ils peuvent utiliser différentes méthodes pour le faire. Les programmes écrits en Python utiliseront probablement le module gi.repository.Gio
(je le sais parce que je l’utilise souvent) ou ils peuvent plutôt utiliser gsettings
en tant que commande externe en appelant subprocess.Popen(['gsettings','org.some.schema','some-key','value'])
, et il s’exécutera essentiellement en tant que commande shell. Un programme C utilisera quelque chose de similaire, probablement une bibliothèque gio.h
, ou pourrait même utiliser la famille de fonctions exec()
pour faire la même chose que Popen
en python. Donc, pour répondre à votre question de titre: "Est-ce que l'application basée sur une interface graphique exécute des commandes shell en arrière-plan?" Ils le peuvent, mais cela n’est probablement pas nécessaire, car il existe une bibliothèque pour la langue dans laquelle l’application est écrite et il sera probablement plus rapide d’utiliser une fonction de bibliothèque que de créer un nouveau processus.
Pour vous donner un exemple de la manière dont vous utilisez les bibliothèques / modules, n'hésitez pas à consulter le code source de mon indicateur de liste de lanceurs. J'ai écrit une fonction pour créer une instance de la classe Gio.Settings
, puis l'utiliser pour modifier le lanceur Unity en fonction du type de liste que vous souhaitez y placer.
How to have a peep at the internal working of these applications? I mean, is there any way of actually looking at the commands that are being executed at every click of button?
Non. Si vous voulez voir quelle commande est émise dans le langage de programmation de cette application lorsque vous appuyez sur un bouton ou cliquez sur des éléments de la fenêtre, ce n'est pas possible. Lisez le code source de l'application, s'il est possible de l'obtenir. Vous pouvez utiliser dconf watch /
pour voir quels paramètres sont modifiés, mais pas comment procéder.
Techniquement, si vous savez utiliser un débogueur, lire des adresses de mémoire et connaître un langage d'assemblage, vous pouvez savoir ce qu'une application fait sur le processeur et la mémoire. C'est ce que l'on appelle l'ingénierie inverse des logiciels. Les professionnels de la sécurité l'utilisent fréquemment pour analyser les logiciels malveillants et découvrir les vulnérabilités des logiciels légitimes.
Do these applications open up a terminal in the background and execute these commands?
Non, il n'y a pas de terminal attaché. De nombreux programmes savent où se trouve la base de données dconf
de l'utilisateur et y écrivent. Il existe également un bus de communication interprocessus appelé dbus
, dans lequel les programmes peuvent envoyer des signaux. Un programme ressemblera à "Hey, c'est un message pour moi!"