Je cours quelques serveurs Team Fortress 2 et je veux écrire un petit script de gestion.Problème avec fifo non bloquant dans bash
Fondamentalement, les serveurs TF2 sont un processus fg qui fournit une console du serveur, donc je peux démarrer le serveur, l'état de type et d'obtenir une réponse de celui-ci:
***@purple:~/tf2$ ./start_server_testing
Auto detecting CPU
Using AMD Optimised binary.
Server will auto-restart if there is a crash.
Console initialized.
[bla bla bla]
Connection to Steam servers successful.
VAC secure mode is activated.
status
hostname: Team Fortress
version : 1.0.6.1/15 3883 secure
udp/ip : ***.***.133.31:27600
map : ctf_2fort at: 0 x, 0 y, 0 z
players : 0 (2 max)
# userid name uniqueid connected ping loss state adr
Grand, maintenant je veux créer un script qui envoie la commande sm_reloadadmins à tous mes serveurs. La meilleure façon de le faire est d'utiliser un tube nommé fifo. Maintenant, ce que je veux faire est d'avoir cette pipe en lecture seule et non bloquante au processus du serveur, donc je peux écrire dans le pipe et le serveur l'exécute, mais je veux encore écrire via le console le serveur, donc au processus fg du serveur et je tape le statut que je veux une réponse imprimée.
J'ai essayé (en supposant serverfifo est mkfifo serverfifo):
./start_server_testing < serverfifo
ne fonctionne pas, le serveur ne commencera pas avant quelque chose est écrit à la conduite.
./start_server_testing <> serverfifo
Cest travail assez bon, je peux voir la sortie de la console du serveur et je peux écrire sur le serveur fifo et exécute les commandes, mais je ne peux pas écrire via la console au serveur plus. De plus, si j'écris 'exit' sur le pipe (ce qui devrait terminer le serveur) et que je le lance dans un écran, la fenêtre de l'écran est détruite pour une raison quelconque (wtf pourquoi?). Je n'ai besoin que du serveur pour lire le fifo sans bloquer ET toute l'entrée de mon clavier sur le serveur lui-même doit être envoyée au serveur ET toute la sortie du serveur doit être écrite sur la console.
Est-ce possible? Si oui, comment?
Je suppose en utilisant "./start_server_testing <> serverfifo" je remappe le stdio à serverfifo ainsi il perd mon clavier comme stdio. Est-il possible de mapper deux sources à la stdio d'un processus (ce qui serait dans mon cas keyboard et serverfifo) – timdel
J'ai supprimé votre ajout récent, simplement parce que ce n'était pas une réponse. Je suis désolé que vous ne pensiez pas que le site vous a aidé, mais (re votre commentaire) je ne peux pas voir aucune preuve que quelqu'un soit "énervé" sauf vous-même - simplement quelqu'un qui vous a donné son idée ce que vous vouliez ... –