Créer des pipe en C sur Windows
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 16 août 2024 à 13:46
- Créer des pipe en C sur Windows
- Créer un compte instagram sur google - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Comment créer un groupe whatsapp - Guide
- Creer cle usb windows 10 - Guide
2 réponses
30 juil. 2024 à 18:40
Bonjour,
Le principe d'un pipe, c'est de rediriger un flux de données d'un processus vers un autre. Conceptuellement (surtout au sens Unix), un pipe n'est qu'un fichier (un peu particulier), et donc s'ouvre quand on en a besoin (avec popen) et doit être fermé quand on n'en a plus besoin (avec pclose). Cela réclame donc une certaine rigueur si tu veux faire les choses proprement (et surtout, quelque chose qui marche !).
Pour apprendre à les utiliser tu peux regarder cette vidéo. L'utilisation semble la même sous WIndows que sous Linux, et ce même si les pipes n'existent pas en ligne de commande sous windows.
Dans ton autre discussion, une approche basée sur les pipes peut effectivement marcher. Par exemple, sous Linux, dans un shell, si on veut surveiller un fichier (typiquement un log système) en temps réel on peut utiliser la commande tail -f. Si on ne s'intéresse qu'aux lignes qui satisfont un certain motif, alors les filtrer à l'aide d'un pipe (noté | en shell) et de grep :
sudo tail -f /var/log/syslog | grep -i "opened"
Exemple :
(mando@cenedra) (~) $ sudo tail -f /var/log/auth.log | grep -i "opened" 2024-07-30T18:34:36.818662+02:00 cenedra sudo: pam_unix(sudo:session): session opened for user root(uid=0) by mando(uid=1000) 2024-07-30T18:34:42.387464+02:00 cenedra sudo: pam_unix(sudo:session): session opened for user root(uid=0) by mando(uid=1000) 2024-07-30T18:35:14.175169+02:00 cenedra sudo: pam_unix(sudo:session): session opened for user root(uid=0) by mando(uid=1000) 2024-07-30T18:35:20.323815+02:00 cenedra sudo: pam_unix(sudo:session): session opened for user root(uid=0) by mando(uid=1000)
Cependant, ce n'est pas la manière dont je le ferais :
- Sous Linux, on utiliserait plutôt inotify que des pipes
- Sous Windows, il semble exister des équivalents d'inotify (voir cette discussion).
Bonne chance
@mamiemando:
> même si les pipes n'existent pas en ligne de commande sous windows
Que veux-tu dire?
Si j'ai un fichier qui contient les chiffres de 5 à 1 (un chiffre par ligne), je peux faire sous cmd:
type fichier.txt | sort
qui me les donnera en ordre croissant.
J'utilise ce genre de choses très régulièrement sous cmd.
3 août 2024 à 17:15
Je me suis dit exactement la même chose que toi en lisant la réponse de mamiemando.
14 août 2024 à 19:01
Dans les anciennes Windows, l'opérateur | n'existait pas. Mais effectivement, cela semble maintenant exister dans les versions plus modernes (e.g., Windows 11).
14 août 2024 à 19:12
Je suis sur Windows 10 et il me semble que je pouvais déjà le faire avec Windows 8.1
16 août 2024 à 13:46
Je ne sais pas dans quelle version de windows c'est apparu, à vrai dire je m'intéresse peu à Windows. Je peux juste te dire que "dans le temps", ça n'existait pas.