Parcours 0 — Avant de commencer · leçon gratuite · 10 min
Programme, processus, et le bouton rouge
Un programme est un fichier ; un processus est ce programme en train de tourner. Savoir l’arrêter proprement évite la moitié des « ça ne répond plus ».
Objectifs
- Distinguer programme et processus
- Arrêter un processus qui tourne dans le terminal
- Comprendre pourquoi un serveur « bloque » le terminal
Un programme est un fichier sur le disque : claude, git, node. Il ne fait rien tant que personne ne le lance.
Un processus est un programme en train de tourner en mémoire. Tu peux lancer trois fois le même programme : ça fait trois processus, avec chacun un numéro (le PID, process ID). Ferme la fenêtre, le processus meurt ; le programme, lui, reste sur le disque.
Deux sortes de processus dans le terminal :
- Ceux qui font une chose et s'arrêtent : ls liste et rend la main. L'invite revient tout de suite.
- Ceux qui tournent jusqu'à ce qu'on les arrête : un serveur de développement, Claude Code, un programme qui surveille des fichiers. L'invite ne revient pas : le processus « occupe » le terminal. Ce n'est pas un bug, c'est normal.
Pour arrêter le processus qui occupe ton terminal : Ctrl+C. C'est le geste le plus important de cette leçon. (Sur macOS, c'est bien Ctrl, pas Cmd.)
Ctrl+C envoie au processus un signal d'interruption (SIGINT). Un programme bien écrit l'intercepte, range ses affaires (ferme les fichiers, coupe le réseau) et se termine. S'il ne répond pas, on a des outils plus radicaux :
ps aux | grep node # trouve le PID du processus node
kill 12345 # lui demande poliment de s'arrêter
kill -9 12345 # le tue sans discussion (dernier recours)Get-Process node # liste les processus node
Stop-Process -Id 12345 # l'arrêteUn processus peut aussi tourner en arrière-plan : il continue, mais rend l'invite. Claude Code sait faire ça avec les commandes longues (leçon dédiée dans le parcours 3).
$ npm run dev
> vite
➜ Local: http://localhost:5173/
➜ press h to show help
# ← l'invite ne revient pas : le serveur tourne. C'est voulu.
# ← pour l'arrêter : Ctrl+C
^C
$Tant que le serveur tourne, tu ne peux pas taper d'autre commande dans cette fenêtre. Solution courante : ouvrir un deuxième onglet de terminal (Cmd+T sur macOS, Ctrl+Shift+T sur Windows Terminal et la plupart des terminaux Linux). Un onglet pour le serveur, un pour Claude Code, un pour tes commandes.
Claude Code est lui-même un processus de longue durée : tant qu'il tourne, il occupe son onglet. Dedans, Esc interrompt ce qu'il est en train de faire (il garde le travail déjà fait), Ctrl+C efface ta saisie ou, pressé deux fois, quitte Claude Code. Quand Claude lance une commande longue (un serveur, des tests), il peut la passer en arrière-plan pour continuer à travailler — tu verras ça dans le parcours 3.
Erreurs courantes
Le terminal ne répond plus, l’invite ne revient pas
Un processus occupe le terminal (serveur, programme en attente).
Ctrl+C. Si c’est un programme plein écran (less, vim, nano) : q, ou Échap puis :q puis Entrée pour vim, Ctrl+X pour nano.
EADDRINUSE: address already in use :::3000
Un ancien processus tourne encore sur ce port (souvent un serveur que tu croyais fermé).
Retrouve-le et arrête-le (lsof -i :3000 sur macOS/Linux, netstat -ano | findstr :3000 sur Windows), ou lance sur un autre port.
À retenir
- Programme = fichier sur le disque. Processus = ce programme en train de tourner.
- Certains processus occupent le terminal exprès (serveurs, Claude Code). Ce n’est pas un bug.
- Ctrl+C arrête le processus en cours. Un onglet par tâche longue.