Was ich versuche zu erreichen, ist ein neues Terminal aus einem C/C++ - Programm zu öffnen und vim auszuführen. Ich tue das, indem ich "xterm -e vim [fname]" forkiere und ausführe. Versuchen Sie, wie ich könnte, ich kann nicht scheinen, xterm zu verstehen, was es ist, ich will es tun.Ein neues Terminal erstellen und vim öffnen
Im Folgenden finden Sie das entsprechende Codesegment:
int pid = fork();
if (pid){
//parent
int retstat;
waitpid (pid, &retstat, 0);
}else{
//child
char* ifname_cchararr = (char*)malloc(ifname.length() + 1);
strcpy (ifname_cchararr, ifname.c_str());
char* const argv[4] = {"-e", "vim", ifname_cchararr, NULL};
// std::cout << ifname_cchararr<<std::endl;
execvp ("xterm", argv);
}
die Programmergebnisse in xterm Beschweren Laufen:
-e: Explizite Shell bereits war/usr/ist/vim
- e: schlechte Befehlszeilenoption "testfile"
Ich bekomme t er das Gefühl habe ich irgendwie arge vermasselt, aber ich bin verwirrt, weil läuft folgendes in einem xterm Fenster:
xterm -e vim testdat
funktioniert perfekt in Ordnung.
Bitte erleuchten Sie mich!
hinzufügen 'xterm' als erstes Argument zu' argv'. – tkausl
@ tkausl oh mein Schatz. Ich dachte, es wurde bereits von der Funktion behandelt. Was für ein dummer Fehler. können Sie eine kurze Antwort machen, damit ich sie annehmen und aufwerten kann? – user3109672