Cでシェルを実装していますが、コマンドの出力をファイルにリダイレクトするのに苦労しています。出力をファイルに送信すると、動作しているように見えますが、ファイルが開かず、ls -l を実行すると、次のように表示されます。
---------x 1 warp staff 441 Nov 4 20:15 output.txt
これは私のコードの一部です
pid = fork();
if(pid == 0)
{ /* child process */
if(redirFlag)
{
int fdRedir = open(redirectName, O_WRONLY | O_CREAT );
if( fdRedir < 0){
perror("Can't Open");
exit(1);
}
if(dup2(fdRedir, STDOUT_FILENO) == -1){
perror("dup2 failed");
exit(1);
}
}
execvp(supplement[0], supplement);
/* return only when exec fails */
perror("exec failed");
exit(-1);