URL: https://linuxfr.org/forums/programmation-c--2/posts/programmer-un-outil-dimpression Title: Programmer un outil d'impression... Authors: Gyro Gearllose Date: 2006年01月02日T17:00:21+01:00 Tags: Score: 0 C'est toujours moi... Bon, suite à mon message ici : [http://linuxfr.org/forums/19/13887.html](http://linuxfr.org/forums/19/13887.html) je me suis posé la question suivante : pourquoi dans la version originelle ai-je fait appel à lp ? Ben oui, c'est con : une simple boucle qui lit les caractères un par un dans le fichier et qui les rebalance au fur et à mesure à l'imprimante devrait résoudre mon problème.... En relisant mon code (je vous en fait grâce, il est gore), je me suis apperçu qu'a l'époque, je l'avait fait, et ça m'avait posé problème.... En effet, le code ressemble à ça :
*c=fgetc(in); while (!feof (in)) { fprintf (lp, "%c", c); c=fgetc (in); } fclose (in);
in est un pointeur sur le fichier à lire, et lp un pointeur sur /dev/lp0 en écriture. Ca fonctionne, ce n'est pas le problème. Ce qui me gêne, c'est que c'est bloquant : si le fichier est gros, il faut attendre que l'imprimante ait fini l'édition. Quand il y a 20 000 pages (oui, ça arrive), faut pas être pressé. Il y a évidement moyen d'optimiser ça en lisant le fichier ligne par ligne, ou même blocs par blocs, mais ça ne résoud que partiellement le problème. En cherchant un peu dans la doc fournie avec ma distro (en particulier les man pages), je me suis apperçu que j'avais peut-être la solution avec les threads.... Mais voilà, je ne suis pas assez calé pour coder ça. Alors si une bonne âme pouvait me donner un exemple de thread créé dans le main, qui continue de s'exécuter en arrière plan, y compris lorsque le main est mort, je lui en serait reconnaissant. A la rigueur, je ne demande pas tout mon programme (faut bien que je me garde quelques lignes à taper quand même), mais juste un exemple avec un pauvre appel à une fonction foo dans le thread me suffirait. Merci mille fois par avance.

AltStyle によって変換されたページ (->オリジナル) /