J'ai téléchargé et compilé jsmin.c, et je l'ai exécuté sur un fichier javascript depuis le terminal, et cela semble fonctionner parfaitement. Mais lorsque je l'appelle à partir d'un appel os.system() ou os.popen() dans un script python (sur le même fichier d'entrée), le fichier de sortie (la version minifiée du fichier js) est tronqué, comme si stdout n'était pas vidé avant que le sous-processus ne se termine, ou comme si jsmin se terminait prématurément, ou comme si quelque chose se passait avec la mise en mémoire tampon du disque ou autre.
Mais aucune de ces choses ne semble être le cas. La valeur de sortie est celle que je renvoie depuis main() même si la sortie est tronquée, et ajouter un appel à fflush(stdout) ne fait aucune différence, et appeler sync depuis le même sous-shell après avoir appelé jsmin ne fait aucune différence.
J'ai essayé de remplacer les appels à putc() par des appels à fputc(), et au début il semblait que cela avait réglé le problème (pour une raison insondable ?), mais ensuite, inexplicablement, le problème a recommencé à se produire, et maintenant il se produit de manière fiable. Bizarre ?
Je dirais qu'il s'agit d'un problème avec jsmin.c, mais le programme fonctionne bien avec le même fichier d'entrée lorsqu'il est exécuté depuis la ligne de commande, donc cela a quelque chose à voir avec l'exécution depuis un sous-processus python.
Voici l'appel de mon sous-processus :
result = os.system('jsmin < ' + tpathname + ' > ' + tpathname + '.min')
(J'ai mis jsmin dans le chemin, et il fonctionne, j'obtiens la plupart des résultats attendus dans le fichier .min).
Quelqu'un peut-il imaginer ce qui pourrait causer ce problème ?