Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : Assembleur - la structure CLI
(Article écrit par Frédéric Delacroix et extrait d'Amiga News - mai 1997)
|
|
Ce mois-ci, nous allons aborder un rapide survol de ces processus particuliers que sont les CLI, au travers d'un programme qui
vous permettra d'espionner les paramètres des autres tâches de votre système.
Vous savez sans doute à peu près tout ce qui distingue une tâche au sens Exec du terme, d'un processus AmigaDOS. Les seconds
sont des extensions des premières par une structure "Process" attachée (à la suite) à la structure "Task", et qui leur permet,
notamment, d'appeler la dos.library.
Il existe cependant une autre structure, la structure "CommandLineInterface", qui confère des propriétés encore plus étendues
à un processus. Parmi celles-ci, citons par exemple la possibilité de faire fonctionner les commandes de scénario IF, ENDIF,
SKIP et consorts : toute la différence entre un scénario lancé par IconX (qui n'est qu'un simple processus) et un scénario
lancé par NewShell (essayez, vous verrez).
Justement : un processus se lance par la fonction Create[New]Proc() de la dos.library, alors qu'un CLI a une couche logicielle,
un programme en plus, qui lui permet à son tour d'exécuter d'autres commandes. On le crée alors par NewShell NewCLI, Run, ou
encore la fonction System() (et non la fonction Execute() !).
Les différents CLI du système se trouvent dans une liste publique de la dos.library et sont numérotés à partir de 1, la dos.library
offre la fonction FindCliProc() pour trouver un processus CLI à partir de son numéro. Leur nombre était limité sous 1.3. Ce
n'est plus le cas de nos jours, heureusement. Le lien entre les structures "Process" et "CommandLineInterface (CLI) se fait par
le champ pr_CLI de la structure "Process", qui est un BPTR, c'est-à-dire une adresse de mot long (à multiplier par quatre
avant usage). La dos.library offre la fonction Cli() pour retourner un pointeur sur la structure CLI du processus courant.
Le nombre de CLI actifs (ou non) du système est retourné par la fonction MaxCli().
En exemple, je vous propose le programme ci-dessous, que j'ai baptisé CLISpy. Il s'agit d'un programme qui accepte en paramètre
un numéro de CLI et affiche sur la console diverses informations le concernant. Il s'agit en quelque sorte d'une extension à la
commande Status... Ce programme n'a rien de compliqué, et vous ne devriez pas avoir de problème pour l'améliorer et en faire un
outil de débogage réellement utile.
|