0
int fd_redirect_to = open(token, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
close(1); //close stdout
dup(fd_redirect_to); //new out
char* line=NULL;
size_t len=0;
while(getline(&line,&len,input_f)!=-1)
{
line[strlen(line)-1]='\0'; //get rid of next line
char* arg[20]; //the most 20 arguments
int i=0;
char* token=NULL;
token=strtok(line,del);
while(token)
{
arg[i]=strdup(token);
++i;
token=strtok(NULL,del);
}
arg[i]=(char*)0;
pid_t div=fork(); //give its own process
if(div==0)
execvp(arg[0],arg);
else if(div>0);
else
printf("error");
}
close(fd_redirect_to);
我想運行文件中的命令列表並將結果存儲到另一個文件中。提供的代碼是孩子。父母是我的外殼,要求用戶輸入。問題是執行此代碼後,我的父母的提示(「輸入命令:」)消失了。我認爲這是由「close(1)」造成的。它關閉stdout。我應該怎麼做才能再次打開stdout?我怎樣才能「再次打開」標準輸出?