Linux
谢谢考拉
前进中的小白阿比
展开
-
Linux信号、信号处理和信号处理函数
Linux信号、信号处理和信号处理函数 分类: LINUX信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可以给进程传递数据。一、信号的来源信号的来源可以有很多种试,按照产生条件的不同可以分为硬件和软件两种。1转载 2015-05-29 19:38:57 · 485 阅读 · 0 评论 -
Linux进程间通信——使用信号量
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行转载 2015-07-19 23:29:56 · 282 阅读 · 0 评论 -
Linux进程间通信——使用信号
一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产转载 2015-07-19 23:34:27 · 283 阅读 · 0 评论 -
Linux进程间通信——信号集函数
我们已经知道,我们可以通过信号来终止进程,也可以通过信号来在进程间进行通信,程序也可以通过指定信号的关联处理函数来改变信号的默认处理方式,也可以屏蔽某些信号,使其不能传递给进程。那么我们应该如何设定我们需要处理的信号,我们不需要处理哪些信号等问题呢?信号集函数就是帮助我们解决这些问题的。有关Linux进程间使用信号通信的更多内容,可以参阅我的另一篇文章——Linux进程间通信—转载 2015-07-19 23:33:02 · 195 阅读 · 0 评论 -
linux 文件描述符
简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用; 而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构函数原创 2015-07-24 18:57:48 · 310 阅读 · 0 评论 -
Linux线程池
大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是"即时创建,即时销毁"的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数非常频繁,那么服转载 2015-11-03 09:04:48 · 335 阅读 · 0 评论 -
关于Linux的进程和线程
什么是进程直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是资源分配的最小单位。什么是线程线程存在与进程当中,是操作系统调度执行的最小单位。说通俗点,线程就是干活的。进程和线程的区别与联系如果说进程是一个资源管家,负责转载 2016-03-17 22:28:39 · 400 阅读 · 0 评论 -
pthread_cond_wait()条件变量
对pthread_cond_wait一直不是很理解,看到一篇文章写的不错,原文在这里,http://www.ibm.com/developerworks/cn/linux/thread/posix_thread3/#1下面说一下,pthread_cond_wait(&mycond,&mymutex)的东西1. 设计pthread_cond_wait 的初衷 线程原创 2016-03-13 08:11:56 · 297 阅读 · 0 评论 -
linux pthreadpool实现和线程池的用处
#include "threadpool.h"void* work(void* arg){ char *p = (char*) arg; printf("threadpool callback fuction : %s.\n", p); sleep(1);}int main(void){ struct threadpool *pool = thread原创 2016-03-13 08:40:10 · 1512 阅读 · 0 评论 -
Linux下time函数
Linux下time函数都在time.h头文件中。1、头文件 和时间有关的头文件有以下几个: time.hsys/time.hsys/times.hsys/timeb.hsys/timex.htime.h是C标准库的头文件,其余sys开头的都是Linux系统自己的头文件。 /usr/include/time.h定义了常用的time函数。 到/usr/原创 2016-04-11 18:28:59 · 4678 阅读 · 0 评论 -
CMake 使用方法
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法CMake的所有的语句都写在一个叫:CMakeLists.txt 的文件中。当CMakeLists.txt文件确定后,可以用ccmake命令对转载 2016-04-23 11:37:40 · 313 阅读 · 0 评论 -
详解ping和ping完整实现
发送ICMP报文时,必须由程序自己计算校验和,将它填入ICMP头部对应的域中。校验和的计算方法是:将数据以字(16位)为单位累加到一个双字中,如果数据长度为奇数,最后一个字节将被扩展到字,累加的结果是一个双字,最后将这个双字的高16位和低16位相加后取反,便得到了校验和!下面是程序实现源代码:USHORTchecksum(USHORT *buffer,int size){原创 2016-06-08 16:25:07 · 2044 阅读 · 0 评论 -
Linux系统上用源码安装OpenSSL的方法
先下载openssl 1.0.1g版本,命令如下: 复制代码代码如下:#wget -c https://www.openssl.org/source/openssl-1.0.1g.tar.gz再下载这个版本的md5校验包: 复制代码代码如下:#wget -c https://www.openssl.org/source/openssl-1转载 2016-06-14 09:56:27 · 401 阅读 · 0 评论 -
实现对文件的实时监控--使用Inotify方法
linux系统下监控文件更改–Inotify API使用方法1.简介:1.inotify机制可用于监控文件或目录。当监控目录时,与该目录自身以及该目录下面的文件都会被监控,其上有事件发生时都会通知给应用程序2.otify监控机制为非递归,若应用程序有意监控整个目录子树内的事件,则需对该树中的每个目录发起inotify_add_watch()调用可使用select(),poll(),epoll()原创 2017-04-21 09:36:15 · 6130 阅读 · 0 评论 -
Linux进程间通信 ————消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。转载 2015-07-19 23:25:28 · 292 阅读 · 0 评论 -
Linux进程间通信——使用匿名管道
在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道这个名词你一定不会感觉到陌生,因为我们通常通过符号“|"来使用管道,但是管理的真正定义是什么呢?管道是一个进程连接数据流到另转载 2015-07-19 23:32:05 · 336 阅读 · 0 评论 -
Linux进程间通信——共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc转载 2015-07-19 23:27:41 · 250 阅读 · 0 评论 -
Linux内核信号处理机制介绍
Linux内核信号处理机制介绍On October 9, 2010, in linux, linux内核, by sponge本文简单介绍下Linux信号处理机制,为介绍二进制翻译下信号处理机制做一个铺垫。本文主要参考书目《Linux内核源代码情景分析》《独辟蹊径品内核:Linux内核源代码导读》首先,先说一下什么是信号。信号本质上是在软件层转载 2015-05-29 21:25:41 · 365 阅读 · 0 评论 -
Linux的概念与体系(详见网页)
Linux的概念与体系作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我在这一系列文章中阐述Linux的基本概念。Linux操作系统继承自UNIX。一个操作系统是一套控制和使用计算机的软件。UNIX是一套规定,所有UNIX系统服从同一个的哲学体系。我侧重于Linux的宏观机制,而忽略许多技术细节。我想转载 2015-05-30 11:00:58 · 367 阅读 · 0 评论 -
Linux多线程与同步
Linux多线程与同步作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正转载 2015-05-30 09:26:40 · 324 阅读 · 0 评论 -
贪吃蛇 Linux
制作一款贪吃蛇游戏的技术要求:1.二维数组、简单的字符处理、循环体、结构体、随机数2.数据结构之队列3.线程控制4.输入输出流编程思想:1.实时显示界面可用二维数组实现,要注意区分当前位置是蛇头、蛇身、苹果还是墙2.贪吃蛇的蛇头和苹果位置要在程序最开始指定,也就是蛇头和苹果的初始化工作,蛇头可以使用随机数确定也可以写死,苹果则必须随机指定;3.我原创 2015-05-30 13:24:35 · 613 阅读 · 0 评论 -
Linux线程互斥锁
在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作。一,锁的创建 锁可以被动态或静态创建,可以用转载 2015-05-31 15:21:39 · 292 阅读 · 0 评论 -
pthread_cond_wait()
pthread_cond_wait()/************pthread_cond_wait()的使用方法**********/ pthread_mutex_lock(&qlock); pthread_cond_wait(&qready, &qlock); pthread_mutex_unlock(&qlock);/*********转载 2015-06-04 10:36:14 · 219 阅读 · 0 评论 -
Linux多线程同步的几种方式
线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。1)互斥锁(mutex) 通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_转载 2015-06-04 10:41:52 · 324 阅读 · 0 评论 -
Linux 磁盘文件内容管理
要去访问磁盘的文件,必须通过系统调用来返回一个与该文件相关联的 ID,这个ID 就是文件描述符file descriptor。Linux 操作系统提供了open 系统调用,任何的进程要去访问一个文件,首先使用open 打开这个文件,系统将返回一个编号,即与这个文件相关联的文件描述符。 (1)用户程序从用户空间向内核空间提交了打开申请。原创 2015-06-04 18:28:24 · 378 阅读 · 0 评论 -
ioctl()函数详解
我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的转载 2015-06-05 16:19:24 · 417 阅读 · 0 评论 -
Linux 文件流与目录流管理
Linux 应用开发_04 文件流与目录流管理本课目标(1)编程目标:(a)实现磁盘文件的拷贝操作。(b)缓冲区类型对磁盘真正写入操作的影响。(2)理解文件流操作以及缓冲区概念。(3)掌握ansi c 文件流相关操作函数。(4)理解与掌握目录流操作。主要知识点(1)流的基本原理及作用,与文件描述符的关系。标准输入输出流基本概念,文件流结构体。(2)缓冲区类型原创 2015-06-05 20:37:22 · 1047 阅读 · 0 评论 -
Linux 目录流管理
“一切都是文件”,目录也是文件,即目录文件。目录当然也是特殊的文件,里面存放的信息是子文件相关的信息。具体怎么存储可以不太关注。ext3/4 文件系统下链式的存储结构。在应用开发中,目录和文件一样,有目录流的概念。fopen opendirfread/…. readdirftell telldirfseek seekdirrewind rewinddirfwri原创 2015-06-05 20:51:51 · 715 阅读 · 0 评论 -
Linux文件vi操作
今天学习了几个命令,是创建、删除文件和文件夹的,在linux里,文件夹是目录,下面说下我学习的命令。创建文件夹【mkdir】 一、mkdir命令使用权限 所有用户都可以在终端使用 mkdir 命令在拥有权限的文件夹创建文件夹或目录。 二、mkdir命令使用格式 格式:mkdir [选项] DirName 三、mkdir命令功能 通过原创 2015-07-16 10:41:17 · 420 阅读 · 0 评论 -
linux中fork()函数详解(原创!!实例讲解)
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数转载 2015-07-19 14:09:34 · 290 阅读 · 0 评论 -
sendfile:Linux中的"零拷贝"
如今几乎每个人都听说过Linux中所谓的"零拷贝"特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中,将从用户空间应用程序的角度来阐述这个问题,因此有意忽略了复杂的内核实现。什么是”零拷贝”为了更好的理解问题的解决法,我们首先需要理解问题本身。首先我们以一个网络服务守护进程为例,考虑它在将存储在文件转载 2017-07-20 11:15:53 · 361 阅读 · 0 评论