2010-11-19 36 views
2

Je travaille sur l'implémentation d'un interpréteur Octave dans une session FastCGI en utilisant C/C++ sous Ubuntu Linux. Le problème que je suis en cours d'exécution en est que FCGI réoriente stdout-FCGI_stdout, mais les en-têtes précompilés Octave parviennent à utiliser encore le stdout normale qui se termine dans la error.log d'Apache au lieu de imprimé au navigateur.Redéfinir stdout dans FastCGI et Octave

Est-ce que vous connaissez un moyen de rediriger Octave de l'utilisation de stdout du système à utiliser FCGI stdout? Ou même simplement pour rediriger stdout dans un fichier sans avoir à modifier le code d'Octave et à le recompiler.

Merci

+0

C ou C++? Laquelle? –

+0

Compilation en C++, et la plupart du code est en C++, mais toutes les instructions d'impression semblent devoir être faites en style C (printf au lieu de cout) pour fonctionner. – vityav

+0

Pouvez-vous modifier les en-têtes précompilés qu'Octave utilise et le recompiler? Si oui, ne pouvez-vous pas faire quelque chose comme '#define stdout FCGI_stdout'? –

Répondre

2

Pour répondre à ma propre question si quelqu'un d'autre vient ainsi: semble mettre précisément en octave stdout ne pas travailler, et ne font aucune tentative de rediriger temporairement stdout au niveau du système. Cependant, octave a la commande dup2, utilisé comme décrit ici:

http://octave.1599824.n4.nabble.com/dup2-on-stdout-or-using-disp-on-another-file-stream-td1611884.html

Ceci peut être utilisé pour rediriger la sortie standard d'octave dans un fichier pour être lu par un autre programme (ou probablement propre flux stdout de rapide-cgi une fois vous avez le PID)