J'ai utilisé exec 3<>/dev/tcp/192.168.0.101/6435
pour établir une connexion TCP avec 192.168.0.101:6435. Et j'ai reçu et envoyé quelques messages avec la pipe
commande.
Maintenant, je veux mettre fin à la connexion TCP. Mais, avec ss -anpet
je peux voir que bash lui-même détient cette connexion, sans bifurquer un processus enfant.
J'ai essayé d'envoyer les signaux 9 et 15 au processus bash, mais comme vous le savez, bash ne peut pas se tuer.
Alors, puis-je mettre fin à la connexion TCP que j'ai établie sans mettre fin aux pts que j'utilise (ni la tuer par root ni envoyer Ctrl + D)?
bash
avec cet obus?bash
peut certainement se tuer - bien que ce ne soit pas vraiment ce que vous voulez faire ici!pipe
commande que vous utilisez et que je ne trouve pas sur mon système? De quel paquetpipe
vient-il? Quels (exemple) paramètres pouvez-vous lui transmettre pour envoyer / recevoir des données via la/dev/tcp/...
connexion? Merci./dev/tcp
, même je ne le trouve pas/dev/tcp
. Mais, il semble que vous puissiez envoyer / recevoir des données avecpipe
ce type de fichiers. On dit qu'il est utilisé/dev/tcp/ip/port
pour les connexions tcp et/dev/udp/ip/port
pour les packages udp. Car mon anglais n'est pas très bon, je ne sais pas comment l'expliquer correctement. N'hésitez pas à modifier la question et à poster une réponse.pipe
commande que vous mentionnez. J'ai regardéhttps://github.com/clsr/sedbot/blob/master/sedbot.bash
. Il n'y a pas depipe
commande là-bas. Il définit deux fonctions:readmsg
etsendmsg
lire / écrire depuis / vers la connexion respectivement.readmsg
utiliseIFS= read -r -u 3 -t "$READ_TIMEOUT" line
pour lire du descripteur de fichier 3 dans la variableline
etsendmsg
utiliseecho "$(date +%s.%N) >>> $line" >&4
pour écrire dans le descripteur de fichier 4. Quoi qu'il en soit, cela clarifie la méthode complète. Lapipe
mention " commande" reste encore un mystère pour les lecteurs.Réponses:
Cette commande a ouvert la connexion sur le descripteur de fichier 3. Donc, pour fermer la connexion, vous devez fermer le descripteur de fichier 3. Pour ce faire:
la source
shutdown(3)
appel, ou tout simplementclose(2)
le descripteur de fichier?close
, maisshutdown
n'est pas plus approprié que proche.shutdown
La seule utilisation réelle est lorsque vous ne souhaitez fermer qu'un côté d'une prise duplex.shutdown
envoie un FIN, tandis que aclose
envoie un RST. Ce sont des choses matériellement différentes.select()
, et je ne pense pas que bash propose l'une ou l'autre option.