2009-08-25 5 views
0

J'ai un programme C dans lequel je crée un interpréteur tcl. J'ouvre ensuite un fichier dans le programme C et je veux le passer sur l'interpréteur tcl pour que l'interpréteur tcl puisse y faire des E/S.Passer un descripteur de fichier ouvert en C à un interpréteur tcl pour l'utiliser

Et je me rends compte que je pouvais simplement ouvrir le fichier dans l'interpréteur tcl, mais j'ai un descripteur de fichier ouvert quelque part ailleurs, donc ce n'est pas une option, malheureusement.

Des idées ou des astuces, ou est-ce que j'ai manqué quelque chose dans l'API tcl de tcl?

Répondre

1
man Tcl_MakeFileChannel 

y lire à propos Tcl_MakeFileChannel et Tcl_RegisterChannel

+0

J'ai vu chan commande doc au niveau tcl, mais je n'ai rien vu qui me semblait approprié pour le faire. J'ai simplifié le problème. En fait, j'utilise le module Perl Tcl et j'ai besoin de construire une commande tcl pour faire la même chose. Existe-t-il une manière équivalente de le faire via l'opération tcl "chan"? Parce que le fichier est ouvert en Perl, mais je peux accéder au descripteur de fichier, et j'ai besoin de le connecter au sous-système tcl. Mais s'il n'y en a pas, je vais mordre la balle et le faire en C de cette façon. Merci pour le conseil! – xcramps

+0

Pourriez-vous écrire une extension TCL C pour créer une nouvelle commande TCL qui fait ce dont vous avez besoin en utilisant les fonctions API Tcl_MakeFileChannel et Tcl_RegisterChannel? – Jackson

+0

Je pense que ces conseils sont la façon dont vous devez aller. Tcl_MakeFileChannel prend un descripteur de fichier existant et le rend disponible dans Tcl. Lisez attentivement la documentation. Je n'ai pas travaillé avec Perl et Tcl, donc je ne peux pas donner de conseils spécifiques pour ça. –

0

Je n'aurais pas avoir à ouvrir le fichier avant vous créez le processus d'interpréteur tcl, si elle va avoir le descripteur de fichier ont une signification? Si vous ouvrez après, et dites dans le programme C que vous avez le descripteur de fichier 9, et que vous passez ensuite ce 9 au processus de l'interpréteur tcl, cela ne va rien signifier.

+0

Ce commentaire s'appliquerait s'il exécutait Tcl en tant que processus séparé, mais je pense qu'il a un interpréteur Tcl intégré dans le programme C, c.-à-d. dans le même processus. –

Questions connexes