linux
文章平均质量分 61
渴望可及
这个作者很懒,什么都没留下…
展开
-
g_main_loop_new
按着glib的文档顺序,先来看看事件循环吧。从最简单的例子开始://mainloop0.c#include GMainLoop* loop;int main(int argc, char* argv[]){ //g_thread_init是必需的,GMainLoop需要gthread库的支持。 if(g_thread_supported() == 0)转载 2014-07-21 15:04:59 · 2341 阅读 · 0 评论 -
const 指针与指向const的指针
当使用带有const的指针时其实有两种意思。一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容。 先说指向const的指针,它的意思是指针指向的内容是不能被修改的。它有两种写法。 const int* p; (推荐) int const* p; 第一种可以理解为,p是一个指针,它指向的内容是const i转载 2016-03-15 23:00:57 · 1138 阅读 · 0 评论 -
select、poll、epoll之间的区别总结[整理]
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2015-12-14 16:03:05 · 309 阅读 · 0 评论 -
数组和指针背后——内存角度
聊过数组和指针的区别,主要是对于数组和指针在内存中的访问方式加以区分,这篇博文则从更深层的角度剖析数组和指针的联系如果你也对底层感兴趣、我向这篇文章会对你有所帮助,什么时候数组和指针相同(When an Array Is a Pointer )在实际应用中,他们可以互换的情形要大大多于不能互换的情形。首先再回顾一下声明和定义,(上一篇中有提到这里在深入一下)声明本身还可以进转载 2016-03-13 07:10:29 · 478 阅读 · 0 评论 -
请问 char *型指针 和 int *型指针 的区别是什么?
区别1:还是指针,指针的2个内容要清楚 1个是指针类型 1个是指针地址char *p1;int *p2;p1 = (char *)malloc(1024 * 100);p2 = (int *)malloc(1024 * 100); 你分配了2块内存,一个100字节 首地址给了p1,一个是400字节 首地址给了p2 p1 = (char *)p2 执行了类型转换原创 2016-03-13 07:15:22 · 7180 阅读 · 1 评论 -
指针运算——算术运算、关系运算
简单来讲就是:C/C++允许将指针和整数进行相加操作,加1的结果就是等于原来的地址值加上指向对象占用的字节数(如 int*p =(int*)malloc(sizeof(int)*5), p+1 表示p指向内存地址加4个字节)。两个指针如果指向同一个数组,则两个指针进行算术运算才有意义,即 int* p =(int*)malloc(sizeof(int)*5);int*转载 2016-03-14 09:59:07 · 5441 阅读 · 1 评论 -
c语言开源项目
下次造轮子前先看看现有的轮子吧值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:h转载 2016-05-30 13:38:16 · 807 阅读 · 0 评论 -
代码时间换空间以及空间换时间
void swap(int a, int b){ int c; c=a; a=b;b=a;}//--->空优 void swap(int a, int b){ a=a+b;b=a-b;a=a-b; }//根据以上的题意解释一下以时间换空间,和以空间换时间第一个,用空间换时间,swap中定义了c,就是在内存中又开辟了一个int内存空间,然后一次swap需要进行三次赋转载 2016-05-30 17:57:07 · 9587 阅读 · 0 评论 -
关于Linux下.so的介绍和编写过程
Linux下的.so是基于Linux下的动态链接,其功能和作用类似与windows下.dll文件。 下面是关于.so的介绍: 一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无转载 2016-07-25 15:55:42 · 1356 阅读 · 0 评论 -
exit()与_exit()的区别
版权声明:本文为博主原创文章,未经博主允许不得转载。 从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()转载 2016-01-26 16:34:53 · 610 阅读 · 0 评论 -
进程间通信--管道
前面我们学习了一下进程,我们知道多,进程间的地址空间相对独立。进程与进程间不能像线程间通过全局变量通信。 如果想进程间通信,就需要其他机制。 常用的进程间通信方式有这几种A.传统的进程间通信方式无名管道(pipe)、有名管道(fifo)和信号(signal)B.System v IPC对象共享内存(s转载 2015-12-15 16:53:28 · 407 阅读 · 0 评论 -
linux下建立软链接
linux下建立软链接博客分类: linux 实例:ln -s /home/gamestat /gamestat linux下的软链接类似于windows下的快捷方式 ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录如上面的示例,当我们执行命令 cd /ga转载 2015-01-04 21:25:50 · 425 阅读 · 0 评论 -
Linux下profile和bashrc四种的区别
/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么?/etc/profile: 用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。/etc/bashrc: 这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,转载 2015-11-04 14:03:45 · 2993 阅读 · 0 评论 -
修改完linux bashrc文件之后,如何不重启系统使其生效
修改完后,输入如下命令即可 ##@##:~/ source ~/.bashrc之后bashrc文件就可以使用!原创 2015-11-04 14:15:26 · 41308 阅读 · 0 评论 -
简单Linux C线程池
大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是"即时创建,即时销毁"的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数非常频繁,那么服转载 2015-11-21 17:34:30 · 360 阅读 · 0 评论 -
GThread 相关接口
同一进程可以包括多个线程,这些线程共享相同的内存空间,而进程都有各自独立的内存空间,进程之间通信需要专门的机制,这无疑增加了内核的开销,降低了系统性能。线程带来的开销很小,内核无需单独复制进程的内存空间或文件描述符等,这就大量地节省了CPU时间,使得创建线程比进程的速度快数十倍。另外,多线程程序作为一种多任务、并发的工作方式,还有以下的优点:1)提高应用程序响应时间;2)使多CPU系统更加有效;3转载 2015-11-02 15:50:36 · 1436 阅读 · 0 评论 -
进程间通信之:共享内存
8.5 共享内存 8.5.1 共享内存概述 可以说,共享内存是一种最为高效的进程间通信方式。因为进程可以直接读写内存,不需要任何数据的复制。为了在多个进程间交换信息,内核专门留出了一块内存区。这段内存区可以由需要访问的进程将其映射到自己的私有地址空间。因此,进程就可以直接读写这一内存区而不需要进行数据的复制,从而大大提高了效率。当然,由于多个进程共享一段内存,因此也需要转载 2015-12-15 16:01:08 · 518 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消转载 2015-12-15 16:28:57 · 370 阅读 · 0 评论 -
进程间通信---共享内存
一、IPC(Inter-Process Communication,进程间通信)对象的介绍System V 的IPC对象有共享内存、消息队列、信号灯。注意:在IPC的通信模式下,不管是使用消息队列还是共享内存,甚至是信号灯,每个IPC的对象都有唯一的名字,称为"键"(key)。通过"键",进程能够识别所用的对象。"键"与IPC对象的关系就如同文件名称于文转载 2015-12-15 16:09:44 · 264 阅读 · 0 评论 -
局部字符串指针 局部数组区别
稍微有些编程经验的朋友都会知道一个函数是无法返回一个局部数组的,至于原因,我想从两个方面进行说明,虽然并不是这两个方面都对其有影响,但我认为在这个问题上我们都该了解的东西:① 函数的返回类型不能为一个数组类型。这个就是说,作为函数返回类型的不能为一个数组,我们要想返回一系列的值,只能用一个指针来代替了,返回指向这一系列值的第一个元素的指针。② 局部数组,具有局部作用域,当函数调用结束之原创 2016-07-14 16:08:43 · 1090 阅读 · 0 评论