2014-02-07 37 views
0

我想使用execv()來允許我從終端讀入輸出文件outputfile.txt。我遇到的問題是它根本無法工作,我不知道我是否正確使用它。使用execv來做基本的I/O

我迄今爲止代碼:

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中什麼都沒有做任何事情。我究竟做錯了什麼?

+2

您忘記了空終止符。仔細閱讀手冊。 –

回答

4

您錯過了NULL終止符到args

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