C:关闭文件描述符

时间:2016-02-12 02:07:34

标签: c unix file-descriptor

我将如何正确关闭文件描述符?我目前要写一个简单的unix shell。例如,如果用户输入sort < someFile,则我有以下代码:

freopen(commandArg[<location + 1],"r",stdin);
executeArg(commandArg);
fclose(stdout);

当我用execvp和所有内容执行命令时,如果我退出程序,它可以正常工作。但是如果我想继续循环并继续获取命令我的程序失败,我得到错误:

sort: write error: Bad file descriptor
sort: fflush failed: standard output: Bad file descriptor

我已经读到它与fclose(stdout)有关,因为当它再次运行while循环时,它会在我已经关闭它之后尝试打开(我认为)。我已经尝试将fclose(stdout)放在程序的最后但仍然会出错。

编辑:我已经尝试取出fclose(stdout),但是当我这样做时,我的代码似乎因某种原因而无法循环。像ls这样的命令不会继续循环。

0 个答案:

没有答案