C/C++
文章平均质量分 61
loophome
这个作者很懒,什么都没留下…
展开
-
perf性能分析工具命令简单实用
perf性能分析工具命令简单实用参考资料:https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/原创 2020-04-01 17:39:49 · 1246 阅读 · 0 评论 -
C语言文件与目录(五)文件锁
1)文件锁定所谓的文件锁定,指的是以独占的方式打开文件。一个程序打开文件以后,其它的程序不能读取或写入文件。文件锁定有利于文件内容的一致性。本节将讲解文件的锁定权限问题。文件锁定的理解:当多个程序程序同一个文件时,可能导致文件的内容不一致情况。例如一个文件中的数据是一个账户金额。用户打开这个文件读取数据,进行处理以后将写结果写入到文件。如果文件没有进行锁定时,可以发生下面这种错误。(1原创 2015-11-06 14:17:47 · 3509 阅读 · 0 评论 -
C语言网络编程(三)建立套接字通讯TCP
为了实现服务器与客户机的通信,服务器和客户机都必须建立套接字。服务器与客户机的工作原理可以用下面的过程来描述。(1)服务器先用socket函数来建立一个套接字,用这个套接字完成通信的监听。(2)用bind函数来绑定一个端口号和IP地址。因为本地计算机可能有多个网卡和IP,每一个IP有多个端口。需要指定一个IP和端口进行监听。(3)服务器调用listen函数,使服务器的这个端口和IP处于原创 2015-11-10 22:21:56 · 5563 阅读 · 0 评论 -
C语言时间函数
在调用系统时间处理时间问题时,需要使用时间函数,使用前需要引入头文件time.h。1.time函数time_t time(time_t *t);time函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。参数t是一个指针,如果不是一个空指针,函数也会将返回值存到t指针所指的内存单元中。time_t是“time.h”头文件中定义的一个数据类型,表示一个原创 2015-10-31 11:26:21 · 834 阅读 · 0 评论 -
linux下使用gdb调试程序
gdb是强大的UNIX下的程序调试工具,提供4个主要的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。步骤一:启动程序file命令:指定执行的程序se原创 2015-12-09 10:36:42 · 839 阅读 · 0 评论 -
C/C++头文件说明
一直以来想整理这一份头文件的说明,避免编写程序遇到某某函数未定义的问题#include //标准输入输出头文件需要预处理的语句:int getchar() //从标准输入设备读入一个字符,显示int putchar() //向标准输出设备写一个字符int scanf(char *format[,argument…]) //从标准输入设备读入数据int printf(c原创 2015-10-17 11:28:34 · 1335 阅读 · 0 评论 -
C语言文件与目录(一)
1.创建与删除目录在Linux系统中,目录就是一个文件夹,文件可以存放在目录中。目录是一种特殊的文件,需要对目录设置权限。 创建目录函数mkdir:函数mkdir可以硬盘中建立一个目录,相当于mkdir命令。但与mkdir命令不同的是,这里的操作是用c语言的函数完成目录创建的。函数的使用方法如下所示。int mkdir(char* pathname,mode_t mode);在参数原创 2015-11-02 13:16:32 · 1173 阅读 · 0 评论 -
C++重载和多态,
太久没复习面向对象的知识了,有时候搞不清楚重载和多态有什么区别,现在来写一篇文章,重新温习一下。多态性,可以简单第概括为“一个接口,多种方法”,程序在运行时才决定调用那个函数。C++中的多态,是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类函数的做法称为覆盖(overridde)。那么什么是重载呢?重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同原创 2016-01-18 22:23:43 · 683 阅读 · 0 评论 -
Reactor模式
1.Reactor的事件处理机制首先来回顾一下普通函数的调用机制:程序调用某函数->函数执行,程序等待->函数将结果和控制权返回给程序->程序继续处理。Reactor是事件驱动机制,和普通函数调用的不同之处在于:应用程序不是主动调用某个API完成处理,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并注册到Reactor上。如果相应的事件发生,Reactor将主动调用应用程序注原创 2016-01-19 20:16:45 · 574 阅读 · 0 评论 -
libevent-简单的定时器
/* For sockaddr_in */#include /* For socket functions */#include /* For gethostbyname */#include #include #include #include #include #include static voidcallback(int,short,void*);static原创 2016-01-20 21:09:40 · 1065 阅读 · 0 评论 -
编写C程序容易犯错的地方
编写C程序要注意的地方非常多,稍不留神就会掉入万劫不复的“坑”,以下就列举一些:数组、结构体,以及动态创建的内存区域必须初始化。如果不进行初始化,变量值是不可预估的!例如:struct Node{ struct Node *next;}Node node;memset(&node,0,sizeof(Node));if(node->next==NULL) //原创 2016-03-03 15:23:21 · 673 阅读 · 0 评论 -
C语言之getopt使用
在使用开源的程序时,随处可见程序可以接受输入的参数,比如著名的压测工具ab,使用的时候就可以输入如下命令:ab -c 100 -n 10000 http://www.37.com。这样就可以吧客户端数和压测次数传递给ab程序。在c语言中,可以使用int main(int argc,char* argv[]),来获取参数。但是,使用argc和argv这2个变量,有一个缺点,就是需要写大量的代码解析程原创 2016-02-19 20:43:06 · 9924 阅读 · 0 评论 -
C语言变长数组实现(利用 struct中char data[0] )
1、结构体内存布局(padding)为了让CPU能够更舒服地访问到变量,struct中的各成员变量的存储地址有一套对齐的机制。这个机制概括起来有两点:第一,每个成员变量的首地址,必须是它的类型的对齐值的整数倍,如果不满足,它与前一个成员变量之间要填充(padding)一些无意义的字节来满足;第二,整个struct的大小,必须是该struct中所有成员的类型中对齐值最大者的整数倍,如果不转载 2017-04-01 07:30:21 · 1755 阅读 · 1 评论 -
C语言网络编程(二)建立套接字通讯UDP
所谓socket套接字,指的是在网络通信以前建立的通信接口。进行网络连接以前,需要向系统注册申请一个新的socket。然后使用这个socket进行网络连接。提示:套接字=传输层协议+端口号+IP地址。在进行网络连接以前,需要用socket函数向系申请一个通信端口。这个函数的使用方法如下所示。int socket(int domain, int type, int protocol);原创 2015-11-10 12:17:05 · 4499 阅读 · 0 评论 -
C语言之网络编程(一)域名解析
在网络编程时,知道域名是不能直接访问一个主机的,需要转换成相应的IP地址。有时在程序中需要将一个IP地址转换成一个域名。本节将讲解C程序中的IP地址与域名的转换问题。提示:在TCP/IP网络中,通信双方的主机必须知道彼此的IP地址方可进行正常的通信,如果给出的主机的域名,在开始正常的通信前必须把域名转换为IP地址。这个域名到IP地址的转换过程称为域名解析。用域名取得主机的IP地址用域名原创 2015-11-09 16:30:05 · 12117 阅读 · 0 评论 -
Window下命令行编译C/C++
在windows下,使用VS编译C/C++非常简单,但是如何在命令行编译呢?可以使用VS自带的VS命令提示,不要使用cmd环境,因为cmd命令一些环境变量还未配置,要手动配置。打开VS命令提示后,就可以使用cl命令进行编译了用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]例如:cl main.c用于 80x86 的 Microsoft (R原创 2015-03-25 12:27:28 · 895 阅读 · 0 评论 -
c读取按行读取文件
c中没有getline()这个函数,该函数只存在于c++中。有些人说用gets,但是这个函数是不安全的,gets不知道字符串的大小,容易造成溢出的问题。解决方案,使用fgets函数其关键在于在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。因此,通过设置适当大小的缓冲区,即可实现读取一行的功能。#include "stdio.h"int main(int argc原创 2015-03-25 18:55:47 · 28294 阅读 · 0 评论 -
Eclipse+CDT+Cygwin在windows下部署C开发编译环境
首先,需要在window的机器上部署Eclipse和Cygwin,Eclipse我使用的是C/C++的版本下载地址:http://www.eclipse.org/downloads/Eclipse的安装过程,网上的文章太多,这里不具体描述,要提一点是Eclipse版本要和Java的版本相匹配,Java是64位,那么Eclipse也应该使用64位。启动Eclipse后,点击“he原创 2015-04-28 11:56:11 · 2033 阅读 · 0 评论 -
memcache编译安装(cygwin环境)
最近尝试编译libevent,可是一直都编译不成功,所有,研究了一下memcahe的编译过程,希望能有所帮助(memcache的底层就是libevent)。首先,在官网上下载memcache的源码包,我使用的是1.4.24这个版本(http://memcached.org/)不多说,下载之后当然得tar xvf memcached-1.4.24.tar.gz,然后进入memcached-原创 2015-04-30 12:09:37 · 1139 阅读 · 0 评论 -
Shared libraries with Eclipse CDT and cygwin on Windows
“Can you help me use shared libraries with Eclipse CDT, managed make and cygwin?“, I was asked yesterday. Read on for a list of common pitfalls and detailed instructions.The instructions are bas转载 2015-07-25 16:05:31 · 574 阅读 · 0 评论 -
linux下gcc/g++编译用法
关于gccgcc用于编译C语言编写的程序,在编译程序时可以有很多可选参数。在终端中输入gcc –help,可以查看gcc的这些可选参数。编译过程:指的是gcc对一个程序进行编译时完成的内部处理和步骤。编译程序时会自动完成预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)四个步骤控制预处理过程:参数-E可以完成程序的原创 2015-10-17 11:51:56 · 5357 阅读 · 0 评论 -
数组与指针&冒泡排序
数组与指针&冒泡排序#include static void bubble_sort(int *,int );intmain(int argc,char **argv){ //冒泡排序 int arr[10] = {2,8,5,34,23,1,98,31,76,45}; bubble_sort(arr,10); return 0;}static voidbubb原创 2015-10-21 22:19:48 · 968 阅读 · 0 评论 -
C语言文件与目录(二)
文件的打开指的是从磁盘中找到一个文件,返回一个整型的打开文件顺序编号。打开的文件处于可读可写状态。文件的关闭指的是释放打开的文件,使文件处于不可读写的状态。 打开文件函数open:函数open的作用是打开一个文件,使文件处于可读写的状态。这个函数的使用方法如下所示。int open(char *pathname, int flags);int open(char *pathna原创 2015-11-03 17:07:33 · 575 阅读 · 0 评论 -
C语言文件与目录(四)缓冲区
1)文件缓冲区将缓冲区数据写入到磁盘函数sync:所谓缓冲区,是Linux系统对文件的一种处理方式。在对文件进行写操作时,并没有立即把文件写入到磁盘,而是把文件写入到缓冲区中。如果需要把文件立即写入到磁盘,可以用sync函数。用这个函数强制写入缓冲区数据的好处是保证数据有同步。这个函数的使用方法如下所示。int sync(void)这个函数会对当前程序打开的所有文件进行处理,将缓冲区中原创 2015-11-06 12:01:55 · 827 阅读 · 0 评论 -
C语言文件与目录(五)移动与复制
文件的移动指的是把文件中一个目录中转移到另一个目录中。C程序提供了方便的文件移动函数。文件的复制指的是将文件作一个备份。C程序没有提示文件复制函数。需要新建一个文件,从原文件中读取内容一次次的写入到新文件中。 文件的移动函数rename:在Linux系统中,移动文件有两种方式。一种方式是在同一个分区中移动文件。这种文件移动方式相当于把文件进行重命名。另一种方式是在不同分区之间移动文件。本小节只原创 2015-11-06 17:04:22 · 12541 阅读 · 1 评论 -
C语言文件与目录(三)
文件读写位置的移动:每一个已打开的文件都有一个读写位置。当打开文件时通常读写位置是指向文件开头,若是以附加的方式打开文件,则读写位置会指向文件末尾。read或write函数读写文件时,读写位置会随相应移动。可以用lseek函数在文件内容中的位置上面移动,这样就可以在文件中不同的位置进行上读写。这个函数的使用方法如下所示。01 off_t lseek(int fd,off_t offset ,i原创 2015-11-06 11:56:51 · 593 阅读 · 0 评论 -
C语言之文件IO
文件打开与关闭打开文件是指在硬盘中找到这个文件,使这个文件处于被调用状态。进行文件读写之前需要进行文件打开操作。文件访问结束以后需要关闭文件。文件打开函数fopen:函数fopen的作用是打开一个文件,这个函数的使用方法如下所示。FILE * fopen(char * path,char * mode);在参数列表中,path是需要打开的文件名字符串。mode是文件打开形态原创 2015-11-09 12:34:39 · 890 阅读 · 0 评论 -
C文件操作
C语言将文件看作是一个字符(字节)的序列,即一个一个字符(字节)的数据顺序组成。根据数据的组成形式,可分为ASCII文件和二进制文件。ASCII文件又称文本(text)文件,它的每一个字节可放一个ASCII码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式按原样输出到磁盘上存放。因而一个C文件就是一个字节流或二进制流。它把数据看作是一连串的字符(字节),而不考虑记录的界限。换句话说原创 2015-03-25 14:37:30 · 980 阅读 · 0 评论