Supposons que je crée un thread à partir de mon thread "principal", qui vise à surveiller et imprimer certaines variables dans "main". Mais "main" génère aussi une sortie, donc je veux imprimer les sorties de ces deux threads séparément. Comment puis-je rediriger la sortie du nouveau thread vers une nouvelle console autre que celle utilisée dans mon programme c? Que penseriez-vous qu'il se passe dans un tel cas (extérieurement)?sortie vers un nouveau terminal
Répondre
Si vous exécutez un programme, vous êtes connecté à une console. Vous n'avez bien sûr pas besoin d'écrire une sortie sur la console (vous pouvez utiliser des fichiers), mais la console ne peut évidemment pas être dupliquée.
Vous n'utilisez pas un descripteur de fichier différent?
Fondamentalement, j'ai deux threads, l'un agissant en tant que serveur et l'autre client. Et je veux surveiller le statut des deux via des consoles en temps réel. Si j'imprime les deux sorties sur la même console, elles sont entrelacées et donc peu lisibles. Donc, je me demande s'il existe un moyen de produire deux consoles différentes, une pour le serveur et l'autre pour le client, dans mon programme c? – sinoTrinity
@sino Je suppose que j'aurais dû être plus clair. Non tu ne peux pas. Encore une fois, que diable cela ferait-il sur le système? Que faire si la console est ouverte via SSH ou s'il s'agit d'un moniteur physique à l'ancienne. Pour réitérer, pourquoi n'écrivez-vous pas simplement dans un descripteur de fichier différent? –
Parce que je veux afficher les deux sorties en temps réel. Si j'écris dans un fichier, il se peut que je doive taper quelque chose comme «tail -f» de temps en temps pour être mis à jour. – sinoTrinity
Je produirais les informations de surveillance dans un fichier, puis utiliser tail -f filename
pour l'afficher dans mon autre terminal.
Cela a l'avantage que vous pouvez exécuter grep
ou ce que vous avez sur la sortie.
Je devrais taper quelque chose comme "tail -f" de temps en temps. Existe-t-il un moyen de surveiller dynamiquement le contenu d'un fichier via la console? C'est-à-dire, si quelque chose est ajouté au fichier, la console défilerait automatiquement et afficherait le nouvellement ajouté juste comme "printf()" à lui? – sinoTrinity
@sino Vous venez de décrire ce que 'tail -f' fait. –
Je voudrais écrire les données dans un fichier journal, puis utiliser tail -f log_file.txt
à partir d'une autre fenêtre pour le regarder depuis de cette façon, vous gardez une copie des données, mais si vous décidez que vous devez utiliser des terminaux séparés alors vous pouvez simplement ouvrir le nouveau terminal (tty) comme un fichier normal. Le principal problème avec ceci est que vous voulez probablement vraiment ouvrir une nouvelle fenêtre de terminal pour vous aussi. L'ouverture d'une nouvelle fenêtre de terminal pour faire quelque chose comme ceci est difficile et est différente entre les différents émulateurs de terminaux. Here est une autre question sur l'ouverture de nouveaux terminaux à partir d'un fichier make. Vous pouvez essayer de faire la même chose à partir de votre programme ou d'un script qui exécute votre programme et exécuter cat
ou tail
dans le nouveau terminal pour être votre fenêtre de journal.
#!/bin/sh
truncate --size=0 ./logfile.txt
xterm "tail -f ./logfile.txt" 2>&1 > /dev/null &
your_program --log-file=./logfile.txt
Je ne connais pas actuellement de meilleure façon d'accomplir cela.
Une autre chose que vous pourriez vouloir examiner est syslog
.
- 1. transfert de sortie vers un nouveau fichier
- 2. Détecter en C si sortie vers un terminal
- 3. Redirection de sortie de terminal Linux
- 4. Sortie JavaScript vers un fichier
- 5. Une façon d'analyser la sortie/l'entrée du terminal? (.bashrc?)
- 6. commande javac sous sortie terminal mac brouillées
- 7. Objectif C: Sortie du terminal dans NSString
- 8. Redimensionnement du terminal qui préserve la sortie
- 9. Comment faire pour exporter la sortie d'une commande externe vers un nouveau tampon dans Vim?
- 10. Rediriger la sortie du simulateur de terminal BlackBerry vers la console
- 11. Comment savoir si stderr dirige la sortie vers un fichier?
- 12. téléchargement vers ftp à partir du terminal
- 13. Powershell: Sortie de l'objet [] vers un fichier
- 14. Sortie audio vers un périphérique Bluetooth couplé?
- 15. Sortie System.out.println vers JTextArea
- 16. Sortie SimpleXML vers MySQL
- 17. Mettre un 'terminal' dans mon application?
- 18. La séquence de contrôle Xterm vers la sortie «T» vers un fichier
- 19. OS X: La sortie du terminal de javac est brouillée
- 20. Quelle fonction R envoie la sortie à un nouveau vecteur?
- 21. Sortie PHP de la boucle foreach dans un nouveau tableau
- 22. Rediriger 301 Le transfert vers l'URL de sortie du nouveau domaine est laide
- 23. Voir la sortie du terminal GNOME dans la console virtuelle
- 24. Afficher la sortie du terminal sur le navigateur Web?
- 25. Sortie AWK vers bash Array
- 26. Rediriger la sortie shell VxWorks vers un socket
- 27. Aide pour déplacer le codeigniter vers un nouveau serveur
- 28. problème Report Viewer après déplacement vers un nouveau serveur
- 29. Déplacement du site SharePoint MOSS 2007 vers un nouveau serveur
- 30. Rediriger vers un nouveau formulaire dans Django Admin sur Enregistrer
Sur quel système d'exploitation est-il exécuté? –
Système d'exploitation Fedora – sinoTrinity
Nitpick: Fedora n'est pas un système d'exploitation. C'est une distribution. – Falmarri