一切只是开始

来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/index.php?blogid=11160&cat=6 存档链接: https://web.archive.org/web/20040520195359id_/http://www.blogbus.com:80/blogbus/blog/index.php?blogid=11160&cat=6


一切只是开始 Linux, 嵌入式系统, 串口通信, PALM OS, Bluetooth ... 是工作中正用到的

Java, software engineering, 以及其他的很多技术,是我感兴趣的 首页 默认分类 (1) 嵌入式技术 (7) Linux (8) 软件工程及其他 (7) 工作日志 (10) 编程积累 (6) PALM (2) 2004 年 5 月 Sun Mon Tue Wen Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 最后更新 一些技术参考站点 kernel study (2) bootsect.S read kernel study (1) beta version by ardio 一些学习内核的资料收集共享 这几天 为 PALM 写的 Makefile 累死,郁闷的了 OOP vs. NOOP 关于 fork 和父子进程的理解 Linux 下创建临时文件 最新评论 carol : 应该是核心 2.4.7. zhou : 没说明分析的是哪. carol : Question: . carol : some newbie's qu. carol : 不止 zhou : 是不是回车换行符. zhou : 高~~. pear : 我也喜欢这些东东. newidea : happy holiday to. zhou : 学了一招,还有tm. 存档 2004/03/25/-2004/05/01 我的链接 blog link ・刀锋战士 ・刀枪blue ・横戈.home ・ mono

・电子工程专辑 ・ ・ 分页: [1] [2] [3] [4] kernel study (2) bootsect.S read - 04/05/15 20:58 author 原创: ardio2001 editor 修改: carol 转载请注明出处: www.loveunix.net 爱 U 家园 Beta version 1.0 last modified 15 th , May, 2004

//@ is commented by ardio carol 发表于 20:58 | 阅读全文 | 评论(2) | 引用(trackback0) Linux 下创建临时文件 - 04/04/26 22:27 Carol noted from << Beginning Linux Programming >> Chap 4 有时候程序需要一些文件形式的临时存储,来保留一些中间过程的操作。如果按照一般方式创建临时文件,可能会面临重名的问题,导致一些冲突。可以使用 tmpname() 函数来生成一个文件名,避免这种情况。 #include < stdio.h

char *tmpnam(char *s); tmpnam 返回一个不与已有文件重复的文件名。 如果临时文件创建以后马上使用,可以使用 tmpfile 函数来同时完成命名和打开。 #include < stdio.h

FILE *tmpfile(void); Tmpfile 函数返回文件流指针( FILE * ) , 指向生成的临时文件。文件可读可写(使用 fopen, w+ )而且在所有引用结束的时候自动删除。 例程: #include <stdio.h> int main() { char tmpname[L_tmpnam]; char filename; FILE tmpfp; filename = tmpnam(tmpname); printf("Temporary file name is: %s\n", filename); tmpfp = tmpfile(); if(tmpfp) printf("Opened a temporary file OK\n"); else perror("tmpfile"); exit(0); } When we compile and run this program, tmpnam.c, we can see the unique file name generated by tmpnam: $ ./tmpnam Temporary file name is: /tmp/filedm9aZK Opened a temporary file OK 更多关于创建临时文件的讨论 英文原文 。。。。。。 carol 发表于 22:27 | 阅读全文 | 评论(1) | 引用(trackback0) 对于 sizeof 的一些理解 - 04/04/26 20:13 初学者容易把 sizeof 和 strlen 搞糊涂,这是偶自己的一些理解: 偶用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度 看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚: char str[20]="0123456789"; int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。 int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。 偶这样理解对吧 上面是对静态数组处理的结果,如果是对指针,结果就不一样了 char ss = "0123456789"; sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针,sizeof 获得的是一个指针的之所占的空间,应该是长整型的,所以是4 sizeof(ss) 结果 1 ===》ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类型的,占了 1 位 strlen(ss)= 10 >>>> 如果要获得这个字符串的长度,则一定要使用 strlen 相关的讨论,可以到LU看, http://www.loveunix.net/index.php?showtopic=26953 附带两篇文章,写的更加详细。。。 carol 发表于 20:13 | 阅读全文 | 评论(2) | 引用(trackback0) C语言中可变参数的用法(转贴) - 04/04/13 12:37 C语言中可变参数的用法 我们在C语言编程中会遇到一些参数个数可变的函数,例如 printf() 这个函数,它的定义是这样的: int printf( const char format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf("%s",s); printf("the number is %d ,string is:%s", i, s); 究竟如何写可变参数的C函数以及这些可变参数的函数编译器是如何实现的呢?本文就这个问题进行一些探讨,希望能对大家有些帮助.会C++的网友知道这些问题在C++里不存在,因为C++具有多态性.但C++是C的一个超集,以下的技术也可以用于C++的程序中.限于本人的水平,文中如果有不当之处,请大家指正. (一)写一个简单的可变参数的C函数 下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的 C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va在这里是variable-argument(可变参数)的意思. 这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值. void simple_va_fun(int i, ...) { va_list arg_ptr; int j=0; va_start(arg_ptr, i); j=va_arg(arg_ptr, int); va_end(arg_ptr); printf("%d %d\n", i, j); return; } 我们可以在我们的头文件中这样声明我们的函数: extern void simple_va_fun(int i, ...); 我们在程序中可以这样调用: simple_va_fun(100); simple_va_fun(100,200); 从这个函数的实现可以看到,我们使用可变参数应该有以下 步骤 : 1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变量是指向参数的指针. 2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数. 3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个参数是你要返回的参数的类型,这里是int型. 4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使用第二个参数了.如果函数有多个可变参数的,依次调用va_arg获取各个参数. carol 发表于 12:37 | 阅读全文 | 评论(0) | 引用(trackback0) 在堆上分配内存――摘自《编程修养》 - 04/04/12 22:04 在堆上分配内存 ――――――――― 可能许多人对内存分配上的“ 栈 stack ”和“ 堆 heap ”还不是很明白。包括一些科班出身的人也不明白这两个概念。我不想过多的说这两个东西。简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。 stack一般是静态分配内存,heap上一般是动态分配内存 。 由malloc系统函数分配的内存就是从堆上分配内存。从堆上分配的内存一定要自己释放。用free释放,不然就是术语――“ 内存泄露 ”(或是“内存漏洞”)―― Memory Leak。于是,系统的可分配内存会随malloc越来越少,直到系统崩溃。还是来看看“栈内存”和“堆内存”的差别吧。 栈内存分配 ――――― char AllocStrFromStack() { char pstr[100]; return pstr; } 堆内存分配 ――――― char AllocStrFromHeap(int len) { char pstr; if ( len <= 0 ) return NULL; return ( char ) malloc( len ); } carol 发表于 22:04 | 阅读全文 | 评论(6) | 引用(trackback0) Linux 下 C 编程从零开始 - 04/04/07 21:13 for www.loveunix.net by Carol see more discussion at: http://www.loveunix.net/index.php?showtopic=25570

这里向大家介绍一下在 Linux/UNIX 的机器上,进行 C/C++ 编程的一些入门级知识。 ・ 所需具备的背景知识 ・ 开发所需的基本环境 ・ 获得帮助的途径 ・ 通过一个实例了解基本步骤 carol 发表于 21:13 | 阅读全文 | 评论(2) | 引用(trackback0) 1.4654290676117