Je reçois la commande du clavier dans un vector<string>
et je veux utiliser dans execl()
, mais execl() prend un const char *
. Y at-il une autre fonction similaire à execl
je peux utiliser qui prend char*
paramètres, ou comment puis-je appeler execl
avec mon char*
?Appel execl sur un caractère non-const []
void Process::exec(string & program, vector<string> & params){
int i;
char x=program[0];
if(x=='/'){
char * argq[params.size()];
for(i=0;i<params.size();i++){
argq[i]=(string_to_c_convert(params[i]));
}
if(params.size()==2){
execl(argq[0],argq[0],(char *)0);
}
if(params.size()==3){
execl(argq[0],argq[1],argq[2],(char *)0);
}
}
Utilisez execv qui a été créé exactement pour cette raison? – immibis
Je ne suis en aucun cas un expert, et fondamentalement juste cherché de la documentation (qui peut même ne pas être officielle), mais il _appears_ que ['execv' prend un' const char * '] (http://linux.die.net/man/3/execv) aussi bien. – Tas
@Elle prend un pointeur vers un tableau d'entre eux. Ai-je bien compris que votre problème est que vous voulez pouvoir passer n'importe quel nombre de paramètres sans copier-coller du code (pour appeler 'execl' avec des nombres de paramètres différents)? – immibis