终于快忙过这段了!

折腾那个提取si表的信息,制作简单的epg的小东西,终于快完成了。还是模仿着dvbdecoder写的,不过他的解包解的很彻底,我的需求就不用了,只要解下nit,sdt,eit,ts,顺便把pat,pmt也解一下。第一次写解包的代码,收获还是挺多的。今天刚被那个setbuf折腾的够呛,setbuf的原型void setbuf(FILE *stream, char *buf),这里的buf要是static或者全局的,悲剧的没好好上课,又没好好看man,莫名其妙的segment fault,最后捕捉SIGSEGV一步一步缩小范围才发现是setbuf的问题。man了下之后,发现那里明确的写着:

       For example, the following is invalid:

       #include <stdio.h>

       int
       main(void)
       {
           char buf[BUFSIZ];
           setbuf(stdin, buf);
           printf("Hello, world!\n");
           return 0;
       }
invalid啊!!哎。好吧,我加上static,可是这样程序执行一段时间又会栈溢出!莫名其妙啊!里面的全局变量的值莫名的就变了!栈溢出的典型表现。去掉setbuf就不会有问题了。setbuf还要好好研究下,mark!

你可能感兴趣的:(终于快忙过这段了!)