Bonjour à tous,
Peut-on récupérer le nom d'un fichier redirigé en stdin sans utiliser argv?
monexe < nomdufichier.txt
![]()
Bonjour à tous,
Peut-on récupérer le nom d'un fichier redirigé en stdin sans utiliser argv?
monexe < nomdufichier.txt
![]()
Sous Unix/Linux, j'ai bien peur que non.
C'est le shell depuis lequel tu tapes cette ligne de commande qui voit "<nomdufichier.txt", ouvre le fichier et écrit son contenu sur l'entrée standard de "monexe" (qu'il lance au préalable).
"monexe" n'a aucune connaissance du (nom du) fichier utilisé (argc vaut 1 et argv[0], "monexe"). Avec la banalisation des fichiers sous Unix/Linux, "monexe" n'a aucun moyen de faire la différence entre la redirection que tu utilises et des "choses" que tu taperais au clavier (jusqu'à un CTRL-D qui marque la fin de fichier).
Sous un Windows récent, il doit y avoir moyen de tricher, mais c'est le genre de chose que tu n'es pas censé faire.
Quel est ton problème exactement?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bonjour,
Sous linux, le répertoire /proc/numero_du_process peut donner ce genre d'informations.
Tu ne peux pas à moins de tricher. C'est le rôle du shell que de mettre le contenu du fichier dans le flux stdin.
et imagine une commande genre :
Tu vas récupérer quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part monexe < `cat fichier.txt | grep "toto"`
Est-ce que ce que tu risques de récupérer (peut être) aura un sens ?
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Non, à partir du signe <, c'est géré par le shell et donc cela ne va pas au programme appelé. Exemple :
pour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { const wchar_t *cmd = GetCommandLine(); _tprintf(L"Command = [%s]\n", cmd); return 0; }cela donne:console.exe < fichier_qui_existe.txtJe pense qu'il n'y a pas moyen de récupérer la commande complète dans ce cas là (sauf à tricher avec le système)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Command = [console ]
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
En fait, je pensais plutôt à GetFileInformationByHandle() sur le handle de l'entrée standard...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager