使用Execv进行基本I/O

Using execv to do basic I/O

本文关键字:Execv 使用      更新时间:2023-10-16

我正在尝试使用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中的内容根本没有做任何事情。我在做什么错?

您错过了NULL终结器到args

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