【发布时间】:2012-05-24 06:27:45
【问题描述】:
在尝试模拟bash 命令时,我还需要写入一个名为errors.log 的文件
如果用户的给定命令失败,则任何有问题的输出。
我尝试输入一些错误输入,但所需文件未按预期更新。
这是main,它有很多代码,但如果对每个变量有任何疑问,我会放整个 main 。 main 的实际动作是在分叉时发生的,并且
对方法 handleSonProcess 的调用,它在下面,在代码的底部:
#define BUFFER 4096
#define BUFFER2 1024
#define RUN_FOREVER 1
#define ERROR_SIGN -1
#define TRUE 1
#define FALSE 0
当我使用输入 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;
}
【问题讨论】:
-
两件事:将字符串写入错误文件时,不要使用
strlen(...) + 1,它也会写入不需要的零。第二个,可能与您的问题有关,也许您需要致电fflush? -
@JoachimPileborg:谢谢,你能看一下帖子中的更新吗?你的建议仍然行不通。
标签: c linux error-handling fork