将错误写入文件

时间:2012-05-24 06:27:45

标签: c linux error-handling fork

在尝试模拟bash命令时,我还需要写入名为errors.log的文件 任何有问题的输出,如果来自用户的给定命令失败。

我尝试输入一些错误的输入,但所需的文件未按预期更新。

这是main,它是很多代码,但如果对每个变量都有任何疑问,我会把整个主要代码放在一边。主要的实际行动发生在分叉和 调用方法handleSonProcess,位于下方,位于代码底部

#define BUFFER 4096
#define BUFFER2 1024
#define RUN_FOREVER 1
#define ERROR_SIGN -1
#define TRUE 1
#define FALSE 0

当我使用intput ls ddddx运行代码时,输​​出应为:

ls: cannot access ddddx: No such file or directory

我希望将该输出写入errors.log文件,但不会写入。

怎么了?

谢谢

修改

errorFile = open("errors.log",O_WRONLY | O_TRUNC | O_CREAT,0600);

// open errors file
// if(errorFile <= 0)
{
    sprintf(errorStr,"open: %s\n",strerror(errno));
    write(errorFile,errorStr,strlen(errorStr));
    fflush(stdout);
    perror("open");
    close(errorFile);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

将消息写入error.log(或更确切地说,其文件指针)后,立即用fflush()将其刷新。此外,在程序退出之前,请确保将其关闭。

由于您在main()中,您可能还会考虑使用错误值返回而不是退出(EXIT_FAILURE)。

我不确定,但是如果你在文件指针上写了一些东西并且它没有出现,那可能是因为它被缓冲了。立即退出可能不会让你的程序干净利落。尝试做所有3:fflush,fclose,并返回而不是退出。看看是否有效......