Créer des pipe en C sur Windows

lenouveau82 Messages postés 53 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 30 juillet 2024 - Modifié le 30 juil. 2024 à 18:25
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

Bonjour à tous,

Il y a quelques jours j'ai posté une autre question sur ce forum. Dans les réponses quelqu'un m'a suggéré d'utiliser les pipes, or si j'ai réussi à trouver ce que c'est, j'ai toutes les peines du monde à trouver des infos sur le sujet. Et encore plus en sachant que je développe sous Windows. Si certains parmi vous avaient des informations ou des tutoriels clairs et simples à me partager ce serait merveilleux je vous en remercie par avance.

A voir également:

2 réponses

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
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

0
PierrotLeFou
31 juil. 2024 à 04:36

@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.

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
3 août 2024 à 17:15

Je me suis dit exactement la même chose que toi en lisant la réponse de mamiemando.

0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
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).

0
PierrotLeFou > mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024
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

0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812 > PierrotLeFou
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.

0