我一直在試圖重定向輸出到一個文件,並從文件而不是標準輸入讀取通過使用函數,但它似乎沒有工作,因爲當我重定向到一個文件並檢查看看是否已經用輸出創建了一個文件,那裏什麼也沒有。這個函數可能有什麼錯誤。重定向標準輸出到文件 - 在C
/* Redirect a standard I/O file descriptor to a file
* Arguments: filename the file to/from which the standard I/O file
* descriptor should be redirected
* flags indicates whether the file should be opened for reading
* or writing
* destfd the standard I/O file descriptor which shall be
* redirected
* Returns: -1 on error, else destfd
*/
int redirect(char *filename, int flags, int destfd){
int ret;
if(flags == 0){
destfd = open(filename,O_RDONLY);
if (destfd < 0){
return -1;
}
ret = dup2(0,destfd);
if(ret < 0){
return -1;
}
close(destfd);
}
if(flags == 1){
destfd = open(filename,O_APPEND|O_WRONLY);
if (destfd < 0){
return -1;
}
ret = dup2(destfd,1);
if(ret < 0){
return -1;
}
close(destfd);
}
return destfd;
}
爲什麼'destfd'參數傳遞給函數? –