
C/C++
文章平均质量分 64
qq827887
程序痞子,代码洁癖,服务器资源吝啬者
展开
-
win平台 C语言-进程管理
想对来说,win平台上的进程管理比linux上简单很多。#include <TlHelp32.h> void showall() { PROCESSENTRY32 pe32={0}; //进程 pe32.dwSize = sizeof(pe32); //设置机构体大小 HANDLE hprocess原创 2016-07-14 01:17:54 · 517 阅读 · 0 评论 -
使用epoll精髓
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在lin转载 2016-08-08 03:29:08 · 345 阅读 · 1 评论 -
linux I/O模型
socket阻塞与非阻塞,同步与异步、I/O模型概念理解在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:1. 同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期转载 2016-08-08 04:14:00 · 339 阅读 · 1 评论 -
同步IO和异步IO
文章转载自: http://blog.youkuaiyun.com/byxdaz/article/details/5461142有两种类型的文件IO同步:同步文件IO和异步文件IO。异步文件IO也就是重叠IO。在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,转载 2016-06-23 21:43:18 · 815 阅读 · 0 评论 -
C语言 文件映射
文件映射内存(虚拟内存) 处理大数据在内存不够用时,可以通过文件映射来加速 映射后的长度不可以通过realloc来修改 #include #include #include char path[128] = "c:\\eli.txt"; int main() { //打开一个文件原创 2016-06-23 04:42:57 · 1699 阅读 · 0 评论 -
临界区,互斥量,信号量,事件的区别
四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 临界区(Critical Section)保证在某一时刻转载 2016-06-23 02:13:13 · 200 阅读 · 0 评论 -
C语言:文件处理
文件处理 C语言程序在进行文件操作时遵循如下操作步骤: 打开->读写操作->关闭, 通俗地说, 打开是获取文件结构、系统为文件分配缓冲区的过程。不打开文件就不能对其进行读写,关闭是释放缓冲区和其他资源的过程,不关闭文件就会慢慢耗光系统资源。 在进行文件操作时,系统自动与3个标准设备文件联系,这3个文件无需打开和关闭,它们的文件指针分别是: s原创 2016-06-22 22:59:06 · 546 阅读 · 0 评论 -
原码、补码、返码
unsigned int num = -1; for (int i = 0; i { printf("ASD"); } 因为num为无符号int型,不可以是负数,所以这种情况下,数据越界。导致结果是for循环越界后数值的次数 这样的情况下数据越界,num为-1的反码。 原码原创 2016-06-22 22:57:56 · 421 阅读 · 0 评论 -
微软库 Detour
微软库 Detour提供API劫持的一套开源库Detour必须运行在发布模式下劫持简单实例: #include #include "detours.h" #pregma comment(lib, "detours") int (*poldsystem)(const char * _Command) = system; //存放sy原创 2016-06-22 22:55:41 · 835 阅读 · 0 评论 -
C语言之位运算
位运算只适用于整数与字符,不可以用在浮点数上反、与、或、异或运算符不关心操作数的符号。与 & 遇0得0,非0得1或 | 遇1得1,非1得0非 ! !(表达式) 表达式的值 为0 则 !(表达式)==1 表达式的值 不为0 !(表达式)==0原创 2016-06-22 22:54:08 · 343 阅读 · 0 评论 -
进制转换
进制快速转换成10进制的方法。 从左开始计算。每一位的值,乘以进制的当前位右侧有包含位数次方 一次类推 2进制: 1101 = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 13 8进制: 207 = 2*8^2 + 0*8^1 + 7*8^0 = 135 16进制: f3 = 15*16^1 + 3*原创 2016-06-22 22:51:59 · 993 阅读 · 0 评论 -
临界区、互斥量、信号量、事 件
临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。互斥量:为协调共同对一个共享资源的单独访问而设计的。信号量:为控制一个具有有限数量用户资源而设计。事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。临界区: 临界区最大线程是64. 一般情况下,使用多线程都会使用CPP,因为CPP中有临界区原创 2016-06-22 07:09:58 · 516 阅读 · 0 评论 -
win平台C语言共享内存通信
实际上多个进程是没办法共享一块内存的。但是操作系统把所有设备都当成文件来处理, 但C语言可以申请块内存标记为设备。 这样多进程就可以对这个设备进行读写操作了。也就可以通过这块内存来完成通讯服务端:#include#include#include#define SIZE 4096LPVOID lpdata = NULL;//指针标识首地址void main(){原创 2016-06-22 02:08:26 · 1515 阅读 · 0 评论 -
win平台C语言油槽通信
进程通信、共享内存 进程与进程之间是不能互相读写内存的,所以需要用到进程通信。 在这种情况下就需要油槽通信,也可以用mutex。服务端:#include #include #include #include #define MAILSLOT "\\\\.\\mailslot\\eli" int ma原创 2016-06-22 01:14:11 · 495 阅读 · 0 评论 -
C语言:宽字符集操作函数
C语言:宽字符集操作函数 (unicode编码) 字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() iscntrl() 测试字符是否是控制符 iswdigit() isdigit() 测试字符是否转载 2016-07-14 02:13:05 · 3555 阅读 · 0 评论 -
C语言-预编译
define: 替换、宏函数、宏展开 不管情况,直接替换 替换字符一般大写 经常改变的常量可以用define来简化 #define N 10 #define NM (2+8) #define f(x) x*x #define pf(y) printf("%d", y) 标识连接符: 1原创 2016-07-14 01:37:42 · 334 阅读 · 0 评论