Exec en langage C/C++
Résolu
Bonjour à tous!
alors voilà... Je programme en C++ sous linux et je veux faire un execlp afin de lancer la commande dot de graphviz à partir de mon programme. Cependant j'ai une erreur que je n'arrive pas à résoudre...
voici mon erreur :
"terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
Abandon"
Je ne comprends pas ou est mon erreur... j'ai essayé en précisant le chemin de ma commande dot : usr/bin/dot dans le premier argument de execlp mais ça n'a pas marché.
voici mon code :
merci pour votre aide et passez tous de bonnes fêtes
sandrine
alors voilà... Je programme en C++ sous linux et je veux faire un execlp afin de lancer la commande dot de graphviz à partir de mon programme. Cependant j'ai une erreur que je n'arrive pas à résoudre...
voici mon erreur :
"terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
Abandon"
Je ne comprends pas ou est mon erreur... j'ai essayé en précisant le chemin de ma commande dot : usr/bin/dot dans le premier argument de execlp mais ça n'a pas marché.
voici mon code :
int main(int argc, char*argv[]) { vector<Sommet>v; string s; v=remplissage(argv[1]);// remplissage d'une structure de données permettant de stocker un graph affichage(v); s=creation_dot(argv[1],v);// creation du fichier .dot associé // Creation du .png string pt; int loc; pt=argv[1]; //creation du nouveau nom de fichier loc=pt.find(".txt",0); pt.erase(loc); pt.push_back('.'); pt.push_back('p'); pt.push_back('n'); pt.push_back('g'); // if(fork()==0) { execlp("dot","dot","-Tpng","graph.dot","-o","graph.png",NULL); } }
merci pour votre aide et passez tous de bonnes fêtes
sandrine
A voir également:
- Exec en langage C/C++
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
5 réponses
ça y est... j'ai trouvé... ce n'était pas du tout dans le execlp que ça n'allait pas en fait.... mais dans un de mes fonctions qui devait renvoyer un string et renvoyait un int.... :$ enfin.... le execlp renvoie un int que j'ai stocké dans un variable.
voilou!
merci en tout cas
voilou!
merci en tout cas
Je ne sais pas si c'est la commande execlp mais personnellement j'utilise plutôt popen ou execve ou execvp...
Bonne chance
Bonne chance
Personnellement j'utilise plutôt execve, execvp ou popen.
À mon avis c'est l'argument NULL qui fait planter ton execlp, cette fonction ne s'utilise pas comme execvp ou execv. Tous les détails ici :
http://www.linux-kheops.com/doc/man/manfr/man-ascii-0.9/man3/execvp.3.txt.html
Bonne chance
À mon avis c'est l'argument NULL qui fait planter ton execlp, cette fonction ne s'utilise pas comme execvp ou execv. Tous les détails ici :
http://www.linux-kheops.com/doc/man/manfr/man-ascii-0.9/man3/execvp.3.txt.html
Bonne chance
merci! c'est gentil d'avoir répondu.
Avec execlp, j'ai toujours mis un NULL comme dernier argument. d'ailleurs si je ne le met pas il me demande "la sentinnelle". sus le man que tu m'a envoyé, il y a noté :
Je ne pense pas que le problème vienne de là... j'ai essayé avec execvp, execve comme conseillé mais ça ne fonctionne pas... apparemment ce qui n'irait pas serait le type de mes arguments...
merci encore!
sandrine
Avec execlp, j'ai toujours mis un NULL comme dernier argument. d'ailleurs si je ne le met pas il me demande "la sentinnelle". sus le man que tu m'a envoyé, il y a noté :
Les arguments const char *arg ainsi que les points de sus pension des fonctions execl, execlp, et execle peuvent être vues comme des arg0, arg1, ..., argn. Ensemble ils décrivent une liste d'un ou plusieurs pointeurs sur des chaînes de caractères terminées par des caractères nuls, qui constituent les arguments disponibles pour le pro gramme à exécuter. Par convention le premier argument doit pointer sur le nom du fichier associé au programme à exécuter. La liste des arguments doit se terminer par un pointeur NULL.
Je ne pense pas que le problème vienne de là... j'ai essayé avec execvp, execve comme conseillé mais ça ne fonctionne pas... apparemment ce qui n'irait pas serait le type de mes arguments...
merci encore!
sandrine
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question