c/c++编程
文章平均质量分 74
山庄来客
这个作者很懒,什么都没留下…
展开
-
专题2 文件系统结构
<br />1. 概述<br />Unix文件系统可划分为引导块、超级块、i结点块(inode区)和数据区等四个部分,其中:<br />(1) 引导块位于文件系统的第0号物理块,它保存了文件系统的引导代码;<br />(2) 超级块位于文件系统的第1号物理块,它描述了文件系统本身的结构信息,这个信息的数据结构一般为“struct filsys”,定义在文件“filsys”中;<br />(3) I节点区位于超级块之后,它描述了文件的属性信息,这个信息的数据结构原创 2011-02-25 22:35:00 · 697 阅读 · 0 评论 -
专题 19 Makefile的使用
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->认识MakefileMake工具的使用格式:make[options] [target]<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->原创 2012-01-08 16:46:50 · 902 阅读 · 0 评论 -
专题 21 国际化
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->gettext是GNU国际化与本地化(i18n)库,它常被用于编写多语言程序。多数编程语言均已通过字符封装的方式实现了对其的支持。主要相关的函数有:char*setlocale(intcategory,constchar*locale);char*bi原创 2012-01-08 16:57:31 · 636 阅读 · 0 评论 -
volatile: 多线程程序员最好的朋友
<!--@page {margin:0.79in}p {margin-bottom:0.08in}code.cjk {font-family:"AR PL UMing HK",monospace}code.ctl {font-family:"DejaVu Sans Mono",monospace}-->volatile关键字用于阻止编译器进行一些翻译 2012-01-01 23:56:47 · 932 阅读 · 1 评论 -
实现控制台上的进度条
通常, 控制台程序在执行一个漫长的任务时,需要实时显示当前进度信息, 本文演示了类似GUI进度条控件的实现.由于需要实时更新进度条信息,并且是要在同一行显示,所以需要用到回车转义字符'\r'.首先是进度条结构体的定义:#include #include #include #include #include #include #include #include原创 2012-09-04 21:59:57 · 2732 阅读 · 0 评论 -
Placement new的用法及用途
什么是placement new?所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可。举例来说:class foo{};foo* pfoo = new foo;pfoo指向的对象的地址你是不能决定的,因为new已经为你做了这些工作。第一步分配内存,第二步调用类的构造函数。而placement转载 2013-02-19 19:51:49 · 964 阅读 · 0 评论 -
到底什么时候用指针或是引用
1.问题提出:当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别? 比如: DateType ExampleFun(CString &strFileName,...)与 DateType ExampleFun(CString strFileName,...)解答之前,我们先来看2个基本的概念:形参和实参。->通俗的讲:形参是形式上的参数,实参是实转载 2013-04-21 16:30:50 · 1422 阅读 · 0 评论 -
libsigc++库的使用
Libsigc++库的使用 概述通常在图形用户界面程序中,我们希望检测事件的代码与处理事件的代码能够分开独立出来。我们可以使用回调函数的机制,注册函数指针来注册相关的处理函数,不过,在C++中,我们可以使用类型安全的库libsigc++。 Libsigc++库中提出了槽的概念,熟悉Qt的朋友应该对槽的概念不陌生,它其实是指向一个可作为回调的函数的引用,以下三种类型的函数都可作为原创 2013-10-20 20:20:01 · 6755 阅读 · 0 评论 -
C/C++语言Notes
Item 1 in the C++ standard that says that non-const references cannot bind to temporary objects.A temporary object is an instance of an object that does not have avariable name. For example:原创 2013-10-21 14:16:44 · 756 阅读 · 0 评论 -
专题 12 IPC之消息队列
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->1.概述消息队列是内核地址空间中的内部链表,通过Linux内核在各个进程之间传递内容。消息顺序地发送到消息队列中,并以几种不同的方式从队列中获取,每个消息队列可以用IPC标识符唯一的进行标识。内核中的消息队列是通过IPC的标识符来区别的,不同的消息队列之间原创 2011-12-18 21:07:11 · 883 阅读 · 0 评论 -
Problem 61 修改进程的显示名称
Problem 61 修改进程的显示名称?Ans: 要更改一个进程的显示名称,需要使用系统调用 prctl(), 其中PR_SET_NAME可用于修改进程显示名字。测试程序:# include # include int main( void ) { char name[ 32] ; prctl( PR_SET_NAME, ( unsi原创 2014-03-07 14:22:37 · 824 阅读 · 0 评论 -
Problem 65 怎樣表示指向結構體或類的成員函數的指針?
Problem 65 怎樣表示指向結構體或類的成員函數的指針?Ans:原创 2014-10-07 21:41:45 · 597 阅读 · 0 评论 -
专题1 库的使用
<br />1.库概述<br />库可以分为静态库和动态库,静态库编译时必须存在,程序运行时不需要。动态库也称共享库,其代码不会链接到目标文件之中,只有当动态库可访问时,应用程序才能正确地执行动态库函数。执行动态库有两种方式:隐式调用和显示调用。隐式调用也称共享库的静态加载,动态库函数在应用程序开始执行时会自动载入内存,进程结束时又自动卸载。编译方式与静态库一致。显示调用也称共享库的动态加载,调用时必须遵守dlopen等函数的规则实现调用。<br /> <br />在Unix中,使用ar命令可以创建或操作静原创 2011-02-25 22:27:00 · 701 阅读 · 0 评论 -
专题 18 Inline Assembly(在C语言中嵌套使用汇编)
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->1.调用形式标准形式:asm("movl %ecx %eax");/* moves the contents of ecx to eax */__asm__("movb %bh(%eax)"); /*moves the byte from原创 2012-01-08 16:43:11 · 1215 阅读 · 0 评论 -
专题 17 SOCKET并发程序设计
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->非阻塞并发模型函数fcntl设置套接字描述符的O_NONBLOCK标志后,即可将I/O方式更改为非阻塞方式。此时函数read,recv,recvfrom,write, send以及accept在调用不成功后立即返回。设置套接字描述符nS原创 2012-01-08 16:36:45 · 1439 阅读 · 3 评论 -
专题 13 IPC之信号量
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->1.概述信号量是一种计数器,用来控制对多个进程共享的资源所进行的访问。它们常被用做一个锁机制。2.相关数据结构与函数信号量数据结构:structsemun{intval;//当执行SETVAL命令时,用于指定要把信号量设原创 2011-12-18 21:14:39 · 620 阅读 · 0 评论 -
专题3 标准IO编程
<br />1. 概述<br />(1) 标准文件编程库中胜于文件创建、打开、关闭和删除的函数有:<br />l fopen: 打开文件流或创建文件函数<br />l freopen: 文件流替换函数<br />l fclose: 关闭文件流<br />l remove: 删除文件函数<br />l rename: 文件更名函数<br />(2) 标准文件编程库中用于无格式字符输入的函数有getc, getchar, 和fgetc等。<原创 2011-02-25 22:46:00 · 770 阅读 · 0 评论 -
专题 4 通用函数库之调试功能封装
目标<br />设计一个函数库,封装五个函数,实现日志输出与断言判断等功能函数原型及其实现<br />2.1 格式化日志输出函数:PrintLog PrintTraceLog<br />原型:int PrintLog(FILE *pfile, const char *pformat, …);<br />功能说明:按照字符串pformat的内容,控制后继参数的数量和格式,并在文件流中输出。<br />原型:int PrintTraceLog(char *pformat, …);<br />功能说明:调用P原创 2011-02-25 23:11:00 · 784 阅读 · 0 评论 -
专题5 低级文件编程
1. 文件的打开与创建1.1 函数原型#include int open(const char *filename, int oflag, …/*[mode_t mode*/];1.2 重要说明oflag:只能为如下三个值:O_RDONLY O_WRONLY O_RDWR读方式打开文件/etc/passwdint fno;if((fno = op原创 2011-06-29 21:39:00 · 1077 阅读 · 0 评论 -
专题 6 目录文件编程
1. 对目录文件的操作包括创建、打开、定位和删除等内容, 其中(1) 获取工作目录的函数有getcwd和getwd等。(2) 设置工作目录的函数有chdir和fchdir等。(3) 创建目录文件的函数有mkdir等。(4) 删除目录文件的函数有rmdir等。(5) 目录文件定位的函数有seekdir、rew原创 2011-06-29 21:41:00 · 548 阅读 · 0 评论 -
专题 7 设备文件编程
1. 设备文件操作UNIX对设备文件的操作相对简单,一般分为打开设备文件、设置设备文件、读写设备文件和关闭设备文件等几部分。代码示例如下:fd = open(devname, O_RDWR);//打开设备文件ioctl(fd, TCGETA, &oldtty);//备份设备文件设置ioctl(fd, TCSETA, &newtty);//设置设备文件设置…………原创 2011-06-29 21:43:00 · 745 阅读 · 0 评论 -
专题 8 进程控制
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->进程的标识、命令行与环境变量/****************************/#includeintmai原创 2011-08-22 00:23:58 · 891 阅读 · 0 评论 -
专题 9 线程
<!--@page {margin:0.79in}p {margin-bottom:0.08in}a:link {}-->线程的创建与中断函数原型:pthread_create(thread,attr,start原创 2011-08-28 17:23:50 · 714 阅读 · 0 评论 -
专题 10 时钟与信号
<!--#toc, .toc, .mw-warning {border:1px solid rgb(170,170,170); background-color:rgb(249,249,249); padding:5px; font-size:95%}#toc h2, .toc h2 {display:inline; border:medium none; pa原创 2011-10-30 17:16:44 · 757 阅读 · 0 评论 -
专题 11 IPC之管道
1.概述管道通信是多个进程之间进行的通信方式之一。无名管道用于父进程与子进程之间进行通信的场合,命名管道用于任何两个进程之间的通信场合。管道仅仅是将某个进程的输出和另一个进程的输入相连接的单向通信的办法。2.无名管道无名管道采用pipe()函数来创建,其函数原型为:#includeintpipe(int filedes[2]);其中的数组filedes是一个文件描述原创 2011-11-01 23:38:59 · 627 阅读 · 0 评论 -
专题 15 TCP套接字编程
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->概述存在三种套接字:流式套接字(SOCK_STREAM)、数据报套接字(SOCK_DGRAM)和原始套接字(SOCK_RAW)。TCP套接字工作流程:首先,服务器端启动进程,调用Socket创建一个基于TCP协议原创 2011-12-18 22:21:55 · 3070 阅读 · 0 评论 -
专题 16 基于UDP的通信程序设计
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->UDP数据的收发UDP协议使用函数sendto发送函数,使用函数recvfrom接收数据。数据发送函数sendto函数原型:intsendto(int s , const void *msg, int len,原创 2011-12-18 22:24:12 · 1040 阅读 · 0 评论 -
专题 14 IPC之共享内存
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->1.概述共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,它是在多进程之间对内存段进行映射的方式实现内存共享的。这是IPC最快捷的方式,共享内存方式的通信过程没有中间过程,共享内存直接将某段进行映射,多个进程间的共享内存是同块内存物理空间原创 2011-12-18 21:16:00 · 646 阅读 · 0 评论 -
专题 20 常用调试技术
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->1.gdb调试 [unfinished]2.strace命令使用很多系统调用的程序常常难以查找错误,因为控制权被传递给内核以便处理系统调用。可以使用strace程序,它是跟踪使用了什么系统调用以及系统调用的结果的一种方法。strac原创 2012-01-08 16:52:17 · 650 阅读 · 0 评论