2012-09-30 67 views
0

我正在c中做一個次要的shell實現,並且我被卡住了。freopen和execvp in c

我想能夠重定向stdinstdout,但我很困惑。在我的shell中,當我想啓動一個程序時,我使用execvp函數。現在我想能夠重定向stdout,所以如果我運行另一個進程,輸出應該被重定向到一個文件而不是屏幕。

下面是示例代碼:

pid_t pid; 

// Child process 
pid = vfork(); 

if((pid == 0)){ 
    freopen("myfile.txt", "w", stdout); 
    char* arr[3]; 
    arr[0] = "cat"; 
    arr[1] = "someFileToCat.txt"; 
    arr[2] = NULL; 
    execvp("cat", arr); 
    fclose(stdout); 
} 

它在終端然而打印,而不是在文件中。

+0

[重定向exec輸出到緩衝區或文件]的可能重複(http://stackoverflow.com/questions/2605130/redirecting-exec-output-to-a-buffer-or-file) – ChrisF

回答