私が達成しようとしているのは、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/binに/ VIM
ました - e:不正なコマンドラインオプション "testfile"
私は彼は私が何とかのargcを台無しにしましたが、私は混乱している、xtermウィンドウに次のように実行されているので、気分:
を。のxterm -e vimのテストファイル完全に正常に動作します
私を教えてください!
'argv'に最初の引数として' xterm'を追加してください。 – tkausl
@tkausl oh dearie me。私はそれが既に関数によって処理されていると思った。どのような愚かなエラー。 私はそれを受け入れてupvoteできるようにあなたは短い答えをすることができますか? – user3109672