Bonjour,

Je fais un petit client/serveur avec netcat, le serveur principal lance un serveur secondaire netcat en arriere plan qui est censé se fermer après un certain timeout.

J'arrive a faire fonctionner le timeout, le serveur secondaire se termine mais j'ai toujours netcat qui tourne.

code du serveur secondaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#!/bin/bash
 
port=$2
exe="services/"$1
 
export PID=$$
 
export TIMEOUT=10
(sleep $TIMEOUT; kill -9 $PID)&
TPID=$!
 
while true ; do
	netcat -l -p $port -e $exe
	kill -9 $TPID
	(sleep $TIMEOUT; kill -9 $PID)&
	TPID=$!
done
La boucle while est bloquée pendant l'execution de netcat, netcat se ferme après la connexion d'un client, tant qu'un client se connecte avant 10s le timeout est relancé (ainsi que netcat)
lorsque le timeout est terminé, le script s'arrete bien mais j'ai toujours un processus netcat qui tourne en arrière plan et sur lequel je peux me connecter.

le $exe a cette forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
while read cmd ;do
  #blablabla
done
Comment se fait-il que netcat ne s'arrete pas avec le serveur lors du "kill -9 $PID" ???