【问题标题】:Using execv to do basic I/O使用 execv 做基本的 I/O
【发布时间】:2014-02-07 03:15:29
【问题描述】:

我正在尝试使用 execv() 从终端读取输出文件 outputfile.txt。我遇到的问题是它根本不起作用,我不知道我是否正确使用它。

到目前为止我的代码:

void my_shell() {
    char* args[2];
    args[0] = "/usr/bin/tee";
    args[1] = "outputfile.txt";
    execv(args[0], &args[0]);   
}

int main() {

    cout << "%";
    //string input;
    pid_t pid, waitPID;
    int status = 0;
    pid = fork();
    if (pid == 0) {
        my_shell();
    }
    else if (pid < 0) {
        cout << "Unable to fork" << endl;
        exit(-1);
    }

    while ((waitPID = wait(&status)) > 0) {
    }

    return 0;
}

它现在所做的是什么都没有发生。该程序分叉很好,但 my_shell 中的内容根本没有做任何事情。我做错了什么?

【问题讨论】:

  • 您忘记了空终止符。再次仔细阅读手册。

标签: c++ exec


【解决方案1】:

您缺少 NULLargs 的终止符。

void my_shell() {
    char* args[3];
    args[0] = "/usr/bin/tee";
    args[1] = "outputfile.txt";
    args[2] = NULL;
    execv(args[0], args);   
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多