摘要: C语言编程中,常常需要返回一些句柄,而这些句柄就是一些结构体,此时我指望外部的人调用我们的函数,传入指定的句柄进行操作,这样外部人就不会破坏句柄结构体中的信息,还可以完成指定操作的目的。方法就是讲结构体的定义在.c文件中1 xxx.c2 3 struct xxxx{4 xxxx;5 xxxxx; 6 };然后在.h文件中1 xxx.h2 3 typedef struct xxxx abcd;这样外部人员可以指定声明结构体或者结构体的指针,而无法改动结构体里的数据。 阅读全文
posted @ 2013-05-15 13:15 曾经的你| 阅读(890) 评论(0) 推荐(0)
摘要: 关于static关键字应用到函数上的文章网上比比皆是,但我一直不太能完全理解,我一直觉得只要函数不声明在头文件中,即使不是静态,别的文件也无法采用。但最近看到网上的一个例子。1 char a = 'A'; // global variable2 void msg() 3 {4 printf("Hello\n"); 5 }1 int main(void)2 { 3 extern char a; // extern variable must be declared before use4 printf("%c ", a);5 (void)m 阅读全文
posted @ 2013-05-15 08:50 曾经的你| 阅读(231) 评论(0) 推荐(0)
摘要: 网上可以直接搜到应用Framebuffer画图的示例程序,但是他们大多是一样,估计是早期的一份程序散播的。然而如果需要写入字符则大多没有示例。最近我就研究一下如何直接操作Framebuffer绘制字符串。简单操作Framebuffer分为几个步骤1.打开framebuffer设备,一般是/dev/fb02.使用ioctl读取fb_var_screeninfo和fb_fix_screeninfon两个结构体信息。fb_var_screeninfo和fb_fix_screeninfon可以看我摘录的嵌入式开发板Framebuffer的原理3.使用mmap函数映射内存4.直接对内存进行操作,内存中每 阅读全文
posted @ 2013-05-13 12:47 曾经的你| 阅读(3415) 评论(2) 推荐(0)
摘要: 摘自http://bbs.chinaunix.net/thread-1932291-1-1.html Framebuffer的配置及应用 *一、FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linu... 阅读全文
posted @ 2013-05-13 12:13 曾经的你| 阅读(2743) 评论(0) 推荐(0)
摘要: 写一个Shell脚本检测某个进程是否在运行 1 #!/bin/sh 2 3 CMD=pgrep 4 #进程名 5 PPROC=test 6 #循环,为了让脚本一直运行监控 7 while : 8 do 9 if [ -n "`$CMD $PPROC`" ]10 then echo "test is ok"11 else12 echo "test is killed"13 fi14 # 每次监测时间60秒15 sleep 6016 done这样就起到了一个守护进程的作用,一旦发现某个进程不运行了,就可以重启启动。 阅读全文
posted @ 2013-05-11 13:01 曾经的你| 阅读(6856) 评论(0) 推荐(0)
摘要: 在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下。c_cc[VTIME]和c_cc[VMIN]映像read函数的返回。VTIME定义等待的时间,单位是百毫秒(通常是一个8位的unsigned char变量,取值不能大于cc_t)。VMIN定义了要求等待的最小字节数,这个字节数可能是0。如果VTIME取0,VMIN定义了要求等待读取的最小字节数。函数read()只有在读取了VMIN个字节的数据或者收到一个信号的时候才返回。如果VMIN取0,VTIME定义了即使没有数据可以读取,read()函数返回前也要等待几百毫秒的时间量。这时,read()函数不需要像其通常情况那 阅读全文
posted @ 2013-05-10 15:13 曾经的你| 阅读(1578) 评论(0) 推荐(0)
摘要: 1 void fun(char* c)2 {3 4 c = new int[10];5 6 }使用这个函数为参数c分配空间,但是实际上事与愿违,传递给fun的参数在外部未获得分配的空间。要想达到此目的,需要使用指针的指针或者指针的引用。1 void fun(char** c)2 {3 4 *c = new int[10];5 6 }1 void fun(char*& c)2 {3 4 c = new int[10];5 6 }原因:不管是传递的变量还是指针,都是按值传递,传递给函数的都是另一份拷贝,只不过变量时传递的变量自身,而指针是传递的这个指针自身的一份拷贝。所以可以改变指针指.. 阅读全文
posted @ 2013-05-09 15:01 曾经的你| 阅读(356) 评论(0) 推荐(0)
摘要: C-就代表CTRL键,M-就代表ALT键虽然这些按键都可以用方向键和PageUp和PageDown按键代替,但是(1)它们在任何键盘上都能用。(2)当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你的手不需要离开打字区。(3)一旦你习惯了使用这些组合键,你也可以很容易地适应其它更高级的光标移动命令。移动到屏幕中央C-l,当前行居于屏幕中央,并且光标移动到屏幕中央上下左右的移动 上一行 C-p : : 向左移 C-b .... 目前光标位置 .... 向右移 C-f : : 下一行 C-nP B F N分别代表p(previous),b(backward),f(for 阅读全文
posted @ 2013-05-09 09:18 曾经的你| 阅读(379) 评论(0) 推荐(0)
摘要: 转自:http://www.cnblogs.com/zhy113/archive/2013/03/15/2960910.html家在写server的时候,不管server写的是多么健壮,还是经常出现core dump等程序异常退出的,但是一般情况下需要在无人为干预情况下,能够自动重新启动,保证server程序能够服务用户。这时就需要一个监控程序来实现 能够让程序自动重新启动,现在笔者在写portmap就遇到了这个问题,通过网上查找资料,找到了一个相对靠谱的exec+fork解决方法。使用脚本实现自动重启首先想到的最简单的使用shell脚本,大概思路:ps -ef | grep “$1″ | g 阅读全文
posted @ 2013-05-06 11:07 曾经的你| 阅读(3903) 评论(0) 推荐(0)
摘要: 注:以下方法都是转载的,我采用了一种结合的方法mount -t nfs -o intr,nolock,rsize=4096,wsize=4096 -o tcp 192.168.1.3:/root/somedir /hostnfs:server is not responding,still trying的解决方法 方法1 :我在arm上通过NFS共享文件时出现下面的错误提示nfs:server is not responding,still trying原因分析:NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。解决方法:在客户端改用TCP协议, 阅读全文
posted @ 2013-04-28 08:50 曾经的你| 阅读(1003) 评论(0) 推荐(0)