Bon bon.

Si on veut faire ça plus sérieusement, y a du boulot.
Donc disons que l'énoncé demande seulement de refaire une partie des
fonctionnalités de ces commandes.
1) Pour kill, c'est assez facile, signal.h propose une fonction kill.
Pour l'aide, taper :
man 2 kill
dans un terminal. Cette fonction prend en argument un PI et un siganl.
Mais après, faut se bouffer le parsage et l'implémentation des
options... Par exemple, avec l'option -l, kill affiche la liste des 64
noms de signaux disponibles, que l'on peut ensuite utiliser avec
l'option -s... Passionnant.
2) cp, a elle aussi presque autant d'options que de lettre d'alphabet,
sans compter qu'elles sont en version longue ou non (style -v est
équivalent à --verbose).
Pour faire une bête copie en C il faut utiliser heuuu... Bah je sais
pas si on peut faire autrement que open/read/write. Pour les
répertoires, il y a mkdir (man 2 mkdir). Après, un coup de récursivité,
et le tour est joué.
3) Pour ps, tout est détaillé dans des fichiers de /proc. Dans ce
dossier, il y a un dossier par processus avec pour nom le PID de
celui-ci. J'avais déjà touché à ça
ici, et c'étais super moche.
Idem que les autres, pleins d'options : le man fait plus de 1000 lignes.
Ce que je trouve super chiant chez linux, c'est que peu importe la
façon dont je cherche, je tombe toujours sur du bash, du bash, du bash
et encore du bash... Jamais de C.

Et j'ai pas encore trouvé un seul site de programmation C sous Linux (Pas la prog à la stdio j'entends...).