新年刚过,抢个位置。
年底在家也看了写linux方面的东西,来又总结了一些,稍微总结一下。
首先是几个发现,程序执行过程中,并不是马上输出stdout,而是等程序结束的时候才会输出。以下面例子为证:
#include
int main()
{ printf("hello,world");
sleep(10);
return 0;
}
#include
int main()
{printf("Hello,world");
flush(stdout);
sleep(10);
return 0;
}
二者明显不同。因此在需要输出时经常采用flush来更新
2:pkgconfig
具体不是很懂。但是有的时候系统提示找不到某个程序,而你确定已经装过该程序,可以把程序的.pc文件拷到该目录下。实在/lib,还是在/usr/lib里,具体搞不清了。
目前在学校tcl/tk,有时间搞搞python,很有用。软件方面一直欠缺,希望今年会改善
1所述并非全对,linux对待io采用FILE结构,而不是采用文件描述符。File包含了一个文件描述符和一个缓冲,文件描述符指向文件描述符表格入口,用来把文件写入磁盘。当写入文件时,数据并不立即写入磁盘,而是先放入缓冲中,即buffer,只有当buffer满时,数据才写入磁盘。因此长采用fflush来刷新(上面写错了)。
终端io略有不同,采用线缓冲而非完全缓冲,即只有在缓冲满时或遇到下一行标志。对上例而言,如果输出内容为“hello,world\n",则立即输出。值得注意的是stderr是不缓冲的,写的内容立即输出。
阅读(998) | 评论(0) | 转发(0) |