Я пытаюсь открыть новый терминал из программы C/C++ и запустить vim. Я делаю это путем разметки и выполнения «xterm -e vim [fname]». Попытайтесь, как я мог, я, похоже, не могу понять xterm, что я хочу, чтобы он это сделал.Нерест нового терминала и открытия vim
Ниже приведен соответствующий сегмент кода:
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);
}
Запуск результатов программы в XTERM жалуясь:
-e: Явная оболочка уже был/USR/бен/ВИМ
- e: неправильная опция командной строки «тестовый файл»
Я получаю t он чувствовал себя я перепутались ARGC как-то, но я смущен, потому что работает следующее в окне XTERM:
XTERM -e ВИМ TestFile
работает прекрасно.
Пожалуйста, просветите меня!
Добавить 'xterm' в качестве первого аргумента к вашему' argv'. – tkausl
@tkausl oh dearie me. Я думал, что это уже обработано функцией. какая глупая ошибка. можете ли вы сделать короткий ответ, чтобы я мог принять его и поддержать? – user3109672