Bonjour,

J'ai beau avoir parcouru Internet, je ne suis pas tombé sur grand chose m'expliquant
les GIOChannels de la GLib.

Je souhaite malgré tout l'utiliser mais j'ai quelques doutes que j'aimerais voir levés.
Mon Anglais est hélas déficient. Les sources peu nombreuses.


J'aimerais invoquer l'ouverture d'un fichier binaire avec "rb"
channel = g_io_channel_new_file("MonFichierBinaire","rb",&error);
Mais d'après la documentation, ce n'est pas possible.
Je peux donc ouvrir un fichier binaire avec:
fp = fopen(argv[1],"rb");
channel = g_io_channel_unix_new(fileno(fp));
Cela ne me parait pas cohérent mais il semble que ce soit possible.


Je n'ai pas tout compris mais il me semble que les commandes tel que
- g_io_channel_read_chars
- g_io_channel_read_line
peuvent lire des données sans les interprêter et donc lire du binaire.
A la condition que j'applique avant la commande:
g_io_channel_set_encoding(channel,NULL,NULL);
Ces commandes sont bloquantes n'est-ce pas ?
g_io_channel_read_line n'a aucun sens en lecture binaire.
g_io_channel_read_chars fini par un s.
Puis-je conclure que cette dernière commande est apte lire tous mon fichier d'un coup ?


Dans la doc, il est écrit:
g_io_channel_unix_new existe aussi sous windows mais a éviter.
A cause d'une confusion entre un descripteur de fichier et un Socket.
Malheusement pour moi, je l'a fait aussi. Je vais étudier la question.
Je veux utiliser la Glib parce que je suis obligé de décliner une version Windows.
J'ai cru lire que l'utilisation de select pose problème.
Mais est-ce vraiment mieux avec la Glib ?


Merci à ceux qui on eu le courage de me lire et plus encore à ceux qui emploieront de leur temps pour me répondre.