Aller au contenu

Linux Attitude

Le libre est un état d'esprit

Archive

Tag : Curiosité

Niveau : Star Empty Empty Empty Empty
Résumé : /proc/<pid>

Les processus comme je l'ai déjà décrit, forment une grande famille.

La famille processus


Dans la famille processus je voudrais le père

Les processus se reproduisent par fork (Mitose en français). Ce qui veut dire qu'à la genèse il n'y avait qu'un processus que nous ne nommerons pas Adam mais init.

Tous les processus possèdent un identifiant (pid) ainsi qu'un identifiant de processus parent (ppid) permettant de les repérer dans un arbre généalogique (pstree).

Comment reconnait-on le père du fils lors du fork d'un processus ? Uniquement par le code de retour de la méthode fork qui vaut 0 pour le fils et donne le pid du fils au père. En dehors de cela les 2 processus sont rigoureusement identiques.

Dans la famille processus je voudrais la mère

Désolé, il n'y a pas de femme chez les processus, la reproduction est asexuée, mais c'est une idée à creuser ...

Dans la famille processus je voudrais le fils

Lorsqu'un processus forke, en général le père poursuit sa vie comme si de rien n'était, par contre le fils va muter. La mutation génétique chez les processus est bien plus violente que chez les êtres vivants. En effet, le code (l'ADN en français) est intégralement relu et remplacé depuis un nouveau fichier sur le disque. C'est ce qu'on appelle un exec.

Il existe quelques cas de processus qui ne fonctionnent pas comme ceci, mais qui laissent leur père mourir (ingrats !) et qui prennent leur place. C'est le cas des démons (un parricide est-il un démon ?) dont le but est de devenir indépendants (émancipés) et ne plus avoir de problèmes d'adolescence (le tty du père) ou de famille (le groupe de processus).

Dans la famille processus je voudrais le grand-père

Lorsqu'un processus meurt, sa dépouille est remise à son père. Elle est essentiellement constituée de son code de retour.

Lorsque le père est déjà mort, c'est le doyen qui a la charge de récupérer le code de retour, par exemple avec la méthode wait.


... continuer la lecture ...

Niveau : Star Star Star Star Empty
Résumé :

Maintenant que nous savons nous servir d'un interpréteur postscript, nous allons pouvoir développer. Postscript est un langage complet au sens de Turing. C'est à dire qu'on peut tout faire avec, même faire décoller une fusée. Mais bon, avant d'en arriver là, on va essayer de faire quelque chose d'utile.

Pour vous présenter le langage, je vous propose un exemple basé sur la fourmi de Langton. C'est une fourmi qui a ceci de particulier qu'elle ne sait que tourner. Son univers ressemble beaucoup à celui du jeu de la vie, c'est-à-dire une grille infinie de cases noires ou blanches. Lorsque la fourmi est sur une case noire, elle tourne à droite, lorsqu'elle est sur une case blanche, elle tourne à gauche. De plus elle inverse la couleur de la case sur laquelle elle se trouve.

Le concept est assez simple, et lorsqu'on lance la fourmi sur une grille blanche, son comportement a l'air aléatoire. Et pourtant au bout d'un moment elle fabrique ce qui ressemble à une autoroute.

Tout ça pour dire que le postscript c'est bien. C'est un langage à pile, qui fonctionne en notation inversée. Les possesseurs de HP48 et amateurs de RPL y retrouveront leurs petits (ou de vieux souvenirs). Les développeurs forth (faite sous savoir si vous êtes dans la salle) apprécieront aussi probablement.

La base

Les commentaires

Toute ligne commençant par un % est un commentaire. Exemple :

% Rien

Les commandes

Les commandes sont des mots simples. Étant donné la notation inversée, la commande se trouve après ses arguments. Par exemple une addition :

5 9 add

A cette notation est associée une pile. 5 pose 5 sur la pile, 9 pose 9 sur la pile, add retire les 2 derniers éléments (donc 9 et 5) puis additionne et repose le résultat sur la pile. D'où la représentation de la pile :

    %avant la ligne de commande
5   % 5 
5 9 % 9
    %pendant le add (invisible)
14  % après le add 

Les commandes peuvent être séparées par des espaces ou des retours à la ligne.


... continuer la lecture ...

Niveau : Star Empty Empty Empty Empty
Résumé :

Après les "top of mind" qui prouvent qu'il existe toujours une solution pour vous dans le libre, voici des alternatives. Ces nouveaux choix ne sont pas moins bons, il sont même meilleurs dans biens des cas. Il est juste moins fréquent de les indiquer à un nouveau venu, tout simplement parce qu'il faut bien faire le premier choix pour lui. Mais il ne faut pas oublier que le monde du libre est le monde de la variété, l'utilisateur a toujours la possibilité de choisit une alternative.

Cette liste est là simplement pour donner des idées à tous ceux qui veulent choisir. Pour chaque section, une recherche sur google vous en ressortira bien d'autres.

Serveurs :
Administration :
Clients :
Divers
Et les protocoles:
  • Transfert de fichier : ftp http
  • Serveur de fichier : webdav ssh ocfs smb
  • Réception de mails : pop imap uucp
  • Gestion d'utilisateurs : passwd nis

... liste très loin d'être exhaustive ...

Niveau : Star Empty Empty Empty Empty
Résumé :

Aujourd'hui une petite liste de logiciels à connaître et à conseiller. Attention, s'ils sont là, c'est parce qu'ils sont "top of mind", ils ont les fonctionnalités les plus larges et conviendront au plus grand nombre. C'est pourquoi il est bon de les conseiller à ceux qui ne savent pas quoi choisir. Cela ne veut pas dire qu'il n'existe pas pour autant d'alternatives fiables, voire meilleures.

Avant d'avoir le choix, il faut avoir une base à partir de laquelle choisir, donc on commence par un choix par défaut, puis on adapte en fonction des besoins. Apache est un bon serveur web, mais dans certains cas on préfèrera lighthttpd, ces cas étant plus rares on commence par apache.

Serveurs :
  • Serveur web : apache 2.2
  • Serveur smtp : postfix
  • Serveur pop et imap : dovecot
  • Serveur dns : bind
  • Serveur ftp : vsftpd
  • Serveur d'annuaire : openldap
  • Serveur base de données : mysql
  • Serveur telnet : aucun
  • Serveur ntp : openntp
  • Serveur irc : conseillez-moi
  • Proxy : squid
  • Mailing-list : mailman
  • Application : ne se prononce pas
Administration :
Clients :
Divers
Et les protocoles:
  • Transfert de fichier : sftp
  • Serveur de fichier : nfs
  • Réception de mails : imaps
  • Gestion d'utilisateurs : ldap

... liste non exhaustive ...

Niveau : Star Star Star Empty Empty
Résumé : C

Le C est plus lisible que le perl, la preuve le code C (test.c) suivant est valide :

%:include <stdio.h>
??=define T 2

int main(void)
??<
        int n<:T:>;

        n??(0??) = 1;
        if(n<:0??) == 1)
        <%
                n??(1:> = ??- n<:0:>;
        %> else
        <%
                n??(1??) = n<:0:> ??! 2;
        %>
        n??(0??) ??'= 3;

        printf( " n0 = %d ??/
                n1 = %d\n", n<:0:>, n<:1:> );

        return 0;
??>

Je le dis et je le prouve :

$ gcc -trigraphs test.c
$ ./a.out
 n0 = 2 		n1 = -2

Hé oui, le C contient quelques spécifications plus ou moins oubliées qui vous permettent ces bizarreries. Il s'agit en fait des trigraphs et des digraphs. Les premiers (3 caractères dont les 2 premiers sont des ?) ont été inventé pour palier un manque dans les tables de caractères pré ASCII (on me souffle qu'en fait c'est post ASCII), dont le petit nom est ISO 646. À l'époque de l'unicode ceci est toujours valable (par une option du compilateur il est vrai).

La deuxième série de caractère spéciaux (basée sur des <, >, % et :) a été introduite en 1999 ! Hé oui, la première écriture était trop peu lisible et devait être simplifiée ...

On peut ainsi créer un bug en C99 sans s'en rendre compte avant longtemps. Exemple :

int a;
a=1;
// Algo a la Kevin ?????????????????/
a++;

Exercice : Pour ceux qui suivent, trouvez la signification de chacun des groupes de caractères. Vous avez le droit à un gcc mais pas au web.