Linux
文章平均质量分 87
wpfbcr
这个作者很懒,什么都没留下…
展开
-
C语言下的FILE指针与Linux的文件描述符
FILE*:它是C库中定义的一个结构体指针,我们在C语言文件操作时打开一个文件返回的指针类型就是它,在C库中是这样定义的,其中的_file它是一个整数,就是作为文件索引的描述符,C库是建立在系统调用上的,这个FILE结构体可以说是一个包装,底层还是用文件描述符对磁盘上的文件进行连接的。650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00原创 2016-05-29 16:54:10 · 1212 阅读 · 0 评论 -
守护进程的创建
守护进程守护进程又称作精灵进程是一个特殊的后台进程,他没有控制终端,周期性的执行该执行的任务650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/7F/E2/wKiom1cwjkLjjkz0AACRvMOl2GA781.png" title="无标题.png" width="700" height="189" border="0" hs原创 2016-05-29 16:54:44 · 445 阅读 · 0 评论 -
Linux信号
Linux信号一、信号:在计算机中存在了一组由整数构成的一组数,这组数大多用于软件中断作用。用kill -l可以查看系统中所定义的信号。650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7F/9D/wKioL1clo-KTTL5cAAEg8Wk91UA719.png" title="kill-l.png" width="700" h原创 2016-05-29 16:54:39 · 235 阅读 · 0 评论 -
信号量实现环形buff下多生产者多消费者模型
posix下定义了一个semaphore,他和systemV版本下的sem很像,而这个多用于线程,它的单位是信号量,而sem的单位是信号量集。 #include int sem_init(sem_t *sem, int pshared, unsigned int value); int sem_destroy(sem_t *sem); int sem_wait(sem_t *sem);原创 2016-05-29 16:54:36 · 399 阅读 · 0 评论 -
线程的同步与互斥---生产者消费者模型
生产者与消费者模型 生产者与消费者模型是一种描述进程间同步与互斥的一个方式,在这个模式下有两类人,一个是不停产生数据的生产者,一个是不停获取数据的消费者,为了效率最高,就必须保持两者之间的同步与互斥。 为了在生产者与消费者使用mutex保持互斥的前提下,posix版本下还有另外一个函数cond它的作用是在生产者生产出来一个数据时便提醒消费者,而消费者在没东西消费时可以使用cond将自己保持在一原创 2016-05-29 16:54:33 · 320 阅读 · 0 评论 -
线程的同步与互斥
线程的同步与互斥多线程往往会引起很多问题,比如下面所示代码: 1 #include 2 #include 3 int g_val=0; 4 void *test(void *arg) 5 { 6 int count=5000; 7 int tmp=0; 8 while(count-->0) 9 { 10 tmp=原创 2016-05-29 16:54:30 · 907 阅读 · 0 评论 -
线程的控制与分离
线程的控制与分离线程与进程:线程可以说是系统的一个执行流,它是操作系统用于调度去cpu中执行的基 本模块,线程它是在进程中存在的,进程相当于承担系统资源的一个实体, 而线程是用来去执行的,它和进程 有些是共享的: 1.文件描述符表 2.每种信号的处理方式(SIG_IGN、SIG_DFL或者自定义的信号处理函数) 3原创 2016-05-29 16:54:27 · 234 阅读 · 0 评论 -
进程间通信(4)---最高效的进程间通信方式--内存共享
内存共享 内存共享,它也是一种进程间通信的方式,它是在虚拟地址空间中堆和栈地址空间的中间的共享映射区中开辟一块地址,然后由页表和mmu在物理内存中开辟一段空间,其他进程如果获取到了这个内存的ID便可以和另外的进程共享这段内存。内存共享的特点:高效,它比其他的进程间通信的方式都要高效因为它直接看到的就是相当于他自己的一块内存。 要用到的函数: int shmget(key_t key, size_原创 2016-05-29 16:54:24 · 1003 阅读 · 0 评论 -
进程间通信(3)--信号量
信号量与简单互斥锁的实现信号量:与管道和消息队列不同,信号量可以说是一个计数器,它用来控制多进程对临界资源的访问,它作的是PV操作,P为减一操作,它是用来获取临界资源的使用权,如果减一之后大于零则可以访问,不然就挂起等待,V为加一操作,当进程对他的访问结束后便执行,用来归还资源的使用权。原子操作:PV的加一减一都是原子操作也就是说加一减一对应的计算机语言只有一条操作,如果不这样设计就会引起双方同时原创 2016-05-29 16:54:22 · 309 阅读 · 0 评论 -
进程间通信(2)消息队列
消息队列也是一种用于进程间通信的方式,它放在计算机内核中,并由消息队列表示符(类比文件描述符)标识,它由操作系统维护。消息队列的特点:1>它支持进程间双向无阻塞的通信。2>它是面向消息传递的。3>它的生命周期是随计算机内核的。下图列出了消息队列的最大消息的一些数据。650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7E/E0/wKi原创 2016-05-29 16:54:19 · 231 阅读 · 0 评论 -
进程间通信(1)---匿名管道与命名管道
管道是进程间通信一种基本的的一种方式,管道又分为两种,匿名管道和命名管道,先说匿名管道匿名管道(pipe)#include int pipe(int filedes[2]);调用pipe时会在内核中开辟一个缓冲区,使用时fileds[0]为输出端,fileds[1]为写入端口,调用成功时返回0,失败时返回-1;pipe的特点:1:它只能在有血缘关系的进程间进行通信。2:它只能进行单项通信,一个进原创 2016-05-29 16:54:16 · 792 阅读 · 0 评论 -
回顾linux系统编程学习过程
一、基础知识1、linux操作系统,熟悉常用的指令。2、vim编译器的使用,Makefile的编写。3、用户以及权限方面相关的知识。4、linux下环境变量的概念。二、进程概念相关1、进程的概念,了解PCB的概念,以及task_struct结构体。2、进程的创建,fork()与vfork()的区别和联系。3、进程的等待,waitpid()与wait(),阻塞等待与非阻塞等待。4、进程的程序替换,e原创 2016-05-29 16:54:47 · 282 阅读 · 0 评论