摘要: 来源网络:View Code #include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <iostream>int main(){ int x = 5; pid_t pid = fork (); if (0 == pid) { std::cout << "pid = " << pid << std::endl; x = 6; std::cout << "x = " << 阅读全文
posted @ 2013-03-01 12:46 lc_cnblog 阅读(2506) 评论(0) 推荐(0) 编辑
摘要: 主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实 阅读全文
posted @ 2013-02-28 20:00 lc_cnblog 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 网上摘抄:更改C编译器的缺省字节对齐方式在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。一般地,可以通过下面的方法来改变缺省的对界条件: · 使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。 · 使用伪指令#pragma pack (),取消自定义字节对齐方式。另外,还有如下的一种方式: · __attribute((aligned (n))),让所作用的结构成员对齐在n字节自然边界上。如果结构中有成员的长度大于n,则按照最大成员的长度来对齐。 · __attribute__ ((packed)),取消结构 阅读全文
posted @ 2013-02-28 13:40 lc_cnblog 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 原文作者:戎亚新摘要:一直以来都觉得printf似乎是c语言库中功能最强大的函数之一,不仅因为它能格式化输出,更在于它的参数个数没有限制,要几个就给几个,来者不拒。printf这种对参数个数和参数类型的强大适应性,让人产生了对它进行探索的浓厚兴趣。 关键字:printf, 可变参数 1. 使用情形 int a =10;double b = 20.0;char *str = "Hello world";printf("begin print\n");printf("a=%d, b=%.3f, str=%s\n", a, b, str); 阅读全文
posted @ 2013-02-28 11:19 lc_cnblog 阅读(893) 评论(0) 推荐(0) 编辑
摘要: url:http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552010102533746418/引入pthread_equal的原因:在线程中,线程ID的类型是pthread_t类型,由于在Linux下线程采用POSIX标准,所以,在不同的系统下,pthread_t的类型是不同 的,比如在ubuntn下,是unsigned long类型,而在solaris系统中,是unsigned int类型。而在FreeBSD上才用的是结构体指针。所以不能直接使用==判读,而应该使用pthread_equal来判断。技术在发展,技术实现有不同,一 阅读全文
posted @ 2013-02-26 10:19 lc_cnblog 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 这两者都是为了防止文件被包含多次。但是有些细微的区别:1,来源的区别:#pragma once 是编译系统相关的,由编译器提供。而#ifndef ...#define ... #endif 是c/c++的宏定义,是语言相关的。2,用法效果的区别:#pragma once 仅用来防止一个文件被包含多次。 而如果一份文件不小心有多个一模一样的备份,#ifndef组合可以避免它们都被包含进来。因为文件中的宏名称是一样的。 但#pragma once只能保证当前文件被包含的次数。 阅读全文
posted @ 2013-02-26 09:42 lc_cnblog 阅读(246) 评论(0) 推荐(0) 编辑
摘要: GL_SINGLE 用于单缓存,使用glFlush()来刷新绘图。GL_DOUBLE用于双缓存 ,使用glSwapBuffers()来交换缓存区,来刷新绘图。注意对于关系,是不能显示的一种原因。 阅读全文
posted @ 2013-02-20 11:14 lc_cnblog 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 原文:http://blog.chinaunix.net/uid-20846214-id-3442937.html物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(IP地址是用软件实现的)。 在发送数据时,数据从高层下到底层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。 连接在通信链路上的设备(主机或路由器)在收到MAC帧时,其根据是MAC帧首部中的硬件地址。在数据链路层看不见隐藏在MAC帧的数据中的IP地址。.. 阅读全文
posted @ 2013-02-16 17:11 lc_cnblog 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 原文:http://blog.chinaunix.net/uid-20846214-id-3443038.html我们知道,网络层使用的是IP地址,但在实际网络的链路上传送数据帧 时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系(IP地址有32位,而局域网硬件地址 是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的硬件地址改变。地址解析协议ARP解决这个问 题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。 每一个. 阅读全文
posted @ 2013-02-16 17:08 lc_cnblog 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 一般用在需要用户等待一段时间的事件中,与用户更好的交互。它可以自动隐藏并重置为最小值,当操作完成后(value 不在改变的时候)所以这个对象 最好不要定义成全局的,不要定义成指针。用完就结束它。创建的常用步骤:1,QProgressDialog progress = new QProgressDialog(this);2,progress.setLabelText(QString );//设置标签上的要提示给用户的文本信息。3,progress.setRange(int,int);//设置百分比的范围。4,一段循环,每完成一个任务,progress.setValue(int); //更新进度。 阅读全文
posted @ 2013-02-07 17:03 lc_cnblog 阅读(1625) 评论(0) 推荐(0) 编辑