我当前使用Lexar进行流分析的编译器类。
在我的一半测试用例中,输出是完美的,没有任何问题,但其他数量seg故障。
我添加了一个fprintf(fp,"描述性文本 n");在每个关键字上,我可以遵循程序的流程,并使调试更加容易。但是,我的程序仅写入文件,如果没有seg错误。
有人知道怎么了,我怎么能总是写作?
打开文件时,将文件流设置为使用setvbuf()
的线缓冲。将新线打印到文件缓冲区时,缓冲区将被冲洗。
FILE *fp = fopen("log.file", "a");
setvbuf(fp, NULL, _IOLBF, BUFSIZ);
这可以节省每个调用后必须添加fflush(fp);
到打印功能。
文件io被缓冲。也就是说,fprintf()
调用将数据实际传输到操作系统之前,将输出存储在几个调用中。如果发生segfault,该数据绝不会传输到OS。
尝试以下操作:
fprintf(fp, "descriptive textn");
fflush(fp);