Tech
文章平均质量分 60
clkrst
这个作者很懒,什么都没留下…
展开
-
mktime和localtime_r能在多线程环境下使用么?
localtime和mktime是用来在时间分量和时间秒数之间进行转换的标准c函数。 在glibc的文档描述中,localtime的实现是使用了一个内部静态缓存来保存结果,所以这是一个不可用于多线程环境的api。glibc提供了一个线程安全版本localtime_r。mktime不存在这个问题。 所以,按照glibc的文档,在多线程环境下可以安全的使用localtime_r和mktime,实际情况原创 2004-07-12 16:18:00 · 10608 阅读 · 8 评论 -
注意使用vc的标准c/c++库的不同版本
今天遇到一个问题,加了一个新模块之后,在vc下编译链接的时候有问题。 搞了半天,最后发现是因为新模块的编译方式和已有模块不一样。 就是C/C++->Code Generation->use run-time library,这个地方要都一致才好。 尤其是在引入第三方库的时候,要确认第三方库使用的标准c库和你使用的是一致的。 vc对于 GUI程序缺省使用multithreaded dll,而对控制台原创 2004-07-30 17:39:00 · 1340 阅读 · 1 评论 -
统计源代码行数的shell脚本
写了一个脚本,可以按模块统计源代码的行数,呵呵。输出结果:~ $ ./line-count [module] [lines] [%]FRED 4744 17.67%dataset 8591 32.00%core 9025 33.61%image 803原创 2004-07-21 15:46:00 · 2255 阅读 · 1 评论 -
磁带的读写
磁带的存储是按照块进行的,所以对磁带的读写都是以块为单位的,这是和磁盘文件最大的不同之处。每次用read读的时候,必须指定读的大小是块的大小。而在写磁带的时候也要尽量按照块的大小进行。 比如,一个磁带的块大小是10K,那么如果read调用是这样的 n = read(fd, buf, 100);那么将返回错误:Cannot allocate memory,这显然是一个莫名其妙的错误提示。但是如果这样原创 2004-07-21 16:24:00 · 2839 阅读 · 0 评论 -
换行符问题
昨天帮人调试一个perl程序。程序运行在windows平台下,目的是,从参数文件中读入字符串,每个字符串都是单独一行的,读入后去掉行尾的换行符。大概的代码类似:$name = ; chomp($name); print("$name"); 现在的问题是$name读出来之后,打印出来却是空的。而且,如果读入的字符串是"fred",发现$name不等于"fred",这样导致下面的程序逻原创 2004-08-06 14:07:00 · 2638 阅读 · 0 评论 -
对于大文件的文件内定位
由于通常的文件位移是用32位有符号整数表示,所以限制了文件位移的最大限度是2G,对于大文件来说,这种限制是必须去掉的。可行的办法: 蚂蚁搬家,把大位移变成连续的小位移。这种方法可以最大程度的保持兼容。缺点:仍然要看seek库函数的具体实现,比如在windows下面,seek的实现要把相对位移(SEEK_CUR)转化成绝对位移(SEEK_SET),这样,这种方法就失效了。使用64原创 2004-08-06 16:19:00 · 1121 阅读 · 0 评论