gpt4 book ai didi

c++ - 生成一个新终端并打开 vim

转载 作者:行者123 更新时间:2023-11-28 05:28:33 24 4
gpt4 key购买 nike

我想要实现的是从 C/C++ 程序打开一个新终端并运行 vim。我通过 fork 和执行“xterm -e vim [fname]”来做到这一点。尽我所能,我似乎无法让 xterm 理解我想要它做什么。

相关代码段如下:

    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 : Explicit shell already was /usr/bin/vim

-e : bad command line option "testfile"

我觉得我搞砸了 argc,但我很困惑,因为在 xterm 窗口中运行以下命令:

xterm -e vim testfile

工作得很好。

请赐教!

最佳答案

您忘记将 xterm 添加为 argv 中的第一个参数。看起来有点奇怪,你必须将程序名称添加到 argv,因为你已经告诉 execvp 你正在调用哪个程序,但事实就是如此.有关原因的更多信息,请参阅最近在 Unix 和 Linux 上提出的问题:Why does argv include the program name

关于c++ - 生成一个新终端并打开 vim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40017787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com