URL: https://www.overclockers.at/coding-stuff/c_externes_programm_aufrufen_windows_165416/page_1 - zur Vollversion wechseln!
Ich schreibe (oder versuche
) gerade ein CLI-Programm in C, welches alle x Minuten (implementiert mit Sleep(x)) ein File auswerten und je nachdem was in dem File steht ein externes Programm (ebenfalls CLI und C) mit Argumenten aufrufen soll.
Für Testzwecke habe ich folgendes Programm geschrieben, dass einfach nur die ihm übergebenen Kommandozeilenparamter zurückgibt
Im Hauptprogramm wird das obere Programm mit execl/execv aufgerufen und zwar folgendermaßenCode:#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { long i = 0; system("cls"); printf("Argument Test v1.0\n\n"); for (i = 0; i < argc; i++) { printf("> %ld: %s\n", i, argv[i]); } printf("\nDone.\n"); return 0; }
Das funktioniert auch, nur leider steht in argv[0] das Argument - und nicht der Programmname - und ich komme nicht mehr ins Hauptprogramm zurück. Mein Testprogramm wird auch nicht beendet.Code:const char execpath[] = "..\\ArgTest\\ArgTest.exe"; const char argument[] = "arg1"; ... execl(execpath, argument, (char *)0);
wird der Taskmanager aufgerufen, das Hauptprogramm steht aber.Code:execl("C:\\Windows\\system32\\taskmgr.exe", (char *)0);

ich bin leider kein guter coder...kann ein bisschen schul C...ist jetzt zwar extrem Russisch...aber du könntest die Programme die du aufrufen willst in die Windows System32 kopieren und dann mit system("XXX"); aurufen...kA obs geht...wilde blöde idee 
Das funktioniert 
Wäre aber nur eine Notlösung, da das Programm, das aich aufrufen will, eigentlich auf einer zentralen Stelle liegen sollte...
Thx auf jeden Fall.
Hat sich erledigt, system() kann auch Programme ausführen die nicht in system32 liegen, man muss nur den Pfad angeben 
oh cool gut zu wissen 
Zitat von jivesSo weit ich http://www.opengroup.org/onlinepubs...tions/exec.html verstanden habe, wird mit execl der aktuelle Prozess einfach überlagert - liegt darin der Fehler? Muss ich einen eigenen, unabhängigen Prozess starten? Wenn ja - wie kann ich das bewerkstelligen?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026