Vous n'êtes pas identifié.
j' arrive pu a executer a partir d' un autre, bordel de merde !!!:!
_cexit(); setdisk(0); execv("COMMAND.COM",NULL);
Ca marche PAS !!!
Hors ligne
Je sais pas pour ton probleme, mais je te previent que ce code ne marcheras pas sous g100+, tu ne peut pas acceder au lecteur A aussi facilement.
@+
Hors ligne
Ça doit venir d'un overflow dans ton programme avant la ligne d'exécution exec...
Vérifie que tu n'écris pas à des endroits non réservés.
Hors ligne
arfffff !
ce prog, c tt ce k il y a !
#include <dos.h> #include <dir.h> #include <process.h> #include <stdio.h> main(void) { long i; _cexit(); execv("A:\COMMAND.COM", NULL); return 0; }
Et c de l' overflow CA!!!
Bon bin je vais faire je ne sais koi ...
Hors ligne
tu n'as pas besoins de _cexit ici.
et l'argument 0 d'n programme est toujours son chemin d'accès complet.
Essayes plutôt :
#include <dos.h> #include <dir.h> #include <process.h> #include <stdio.h> int main(void) { execl("A:\COMMAND.COM", "A:\COMMAND.COM", NULL); return 0; }
execv ne sert que si tu transmets un tableau d'argument au programme.
Hors ligne
Arrf !
Et pk ca marcher ss sur X-win ?
Enfin bon ..
Je vais test !
merci ds tt les cas !
--------------------------------
Argh !
Ca marche po non plus ...
Hors ligne
non je pense au contraire que c tout con...
#include <dos.h> #include <dir.h> #include <process.h> #include <stdio.h> main(void) { long i; _cexit(); // ?? c koi deja ?? setdisk(0); //pour se mettre sur A: execv("COMMAND.COM", ""); return 0; }
il ne faut pas trop titiller ROMDOS.
c comme sous msdos
je veux lancer a:machin.exe
je fais:
c:>a: a:machin.exe
et pour les arguments tu mets jamais un pointeur null mais une chaine vide
Hors ligne
nan ça sert à rien de changer le lecteur vers a: (on y est déjà) et la méthode que j'ai donné fonctionne, mettre une chaîne vide équivaut à mettre un NULL.
et comme je l'ai dit execv sert dans les cas ou tu envoi un tableau d'argument au programme et l'a tu lui envois rien et l'argument 0 d'un programme est toujours sont chemin complet.
il suffit de regarder l'aide en ligne de TC (y'a des exemples).
Hors ligne
je suis tout a fait d'accord avec ce que tu viens d'affirmer, pourtant , les sources de sysexpl3.0 (de Whyp) prouvent le contraire.
Voila la partie du code qui lance les exe:
Exelnch : if (bmpview(fichier[ligne1-1]) == 1) { _cexit(); setvect(9,int9); for(i=1;i<=10000;i++); execl(fichier[ligne1-1],NULL); /* EXE : lance le fichier selectionner*/ goto Fin; }
... et le 2eme argument de execl est bien NULL. Or ca marche parfaitement.
:?:
Hors ligne
ms g compilé tt les exemple, les sources de whip et celle de touches concernant l' execution en mettant le path de space+ sur ma caltos et pas command.com o kas ou et ca foire ...
Je pense ke ca vient du compilo ...
Hors ligne
Peut-être qu'il n'est pas obligatoire mais pourtant dans les exemples ils le mettent...
_cexit n'est pas utile execl doit le faire de toute façon (lisez l'aide de TC sur _cexit).
@+
Hors ligne
g essayé de lancer MarioKart a partir d'un autre exe de plusieurs facons (avec _cexit() , ssans _cexit() , avec setdisk(), sans, etc ...) et je lui aus fait afficher les messages d'erreur éventuels ( perror() ) . La seule fois ou g eu un message d'erreur, c que je m'étais trompé de lecteur (" no such file or directory) ce qui est normal.
Toutes les autres fois, je n'ai rien eu dc je supose qu'il lancait bien l'EXE mais la calculatrice se blokait ( ecran blanc).
Mois je dis que c bizare cette histoire : ca marche chez les uns et pas chez les autres ... ( g la ROM 1.02 c pê ca ! : Zavez laquelle ?)
Hors ligne