You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用execvp()调用konsole执行nvim时文件异常的问题求助

使用execvp()调用konsole执行nvim时文件异常的问题求助

最近在做GUI程序的时候遇到个头疼的问题:我想用execvp()调用终端程序,拿konsole做测试,打算通过-e参数让它启动nvim打开~/test.txt,结果出怪事了。

直接在Linux shell里跑konsole -e nvim ~/test.txt是完全正常的——之前已经存在的~/test.txt能正常打开编辑,保存后内容也完全符合预期。但用execvp()写代码调用就不行,具体情况如下:

先贴一下我的测试代码:

#include <unistd.h>
#include <string>
#include <vector>
using std::string;
using std::vector;

int main() {
    vector<string> strvec = {"konsole", "-e", "nvim", "~/test.txt"};
    vector<char*> vec;
    for (auto& str : strvec) vec.push_back(str.data());
    vec.push_back(nullptr);

    for (auto& arg : vec) printf("%s\n", arg);
    execvp(vec[0], vec.data());
}

运行这段代码后,控制台打印的参数看起来是对的:

konsole
-e
nvim
~/test.txt
(null)
QLayout: Cannot add a null widget to QHBoxLayout/ Process <pid> did not die with SIGHUP

但关键问题是,这时nvim打开的~/test.txt变成了无效文件?明明shell里跑完全正常,用execvp()调用就出问题,我到底哪里弄错了?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 10:28:03