
linux学习
healeryou
需完善
展开
-
linux进程间的通信
什么是进程间通信? 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。此外,还有双方都可以访问的外设。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据原创 2017-05-12 16:58:46 · 437 阅读 · 0 评论 -
linux网络编程(1)
1. socket文件描述符:套接字int socket(int domain,int type,int protocol) domain:用于指示协议族的名字,如AF_INET为ipv4. type:用于指示类型,如基于流通信的SOCK_STREAM。 protocol:用于指示对于这种socket的具体协议类型,当前两个参数确定时,只存在一种协议类型,这时protocol为0; 成功创建sock原创 2017-05-28 18:52:17 · 298 阅读 · 0 评论 -
linux网络编程(2)
关于套接字(socket)的理解不同计算机(通过网络相连)上运行的进程相互通信机制称为网络进程间通信(network IPC)。 在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)构成套原创 2017-06-01 21:35:59 · 489 阅读 · 0 评论 -
linux线程学习(6)
1. 线程私有数据 应用程序设计中有必要提供一种变量,使得多个函数多个线程都可以访问这个变量(看起来是个全局变量),但是线程对这个变量的访问都不会彼此产生影响(貌似不是全局变量哦),但是你需要这样的数据,比如errno。那么这种数据就是线程的私有数据,尽管名字相同,但是每个线程访问的都是数据的副本。 在使用私有数据之前,你首先要创建一个与私有数据相关的键,要来获取对私有数据的访问权限 。这个键的类型原创 2017-05-19 18:27:43 · 219 阅读 · 0 评论 -
linux线程学习(5)
线程的高级属性1. 一次性初始化: 有些事需要且只能执行一次(比如互斥量初始化)。因此有了使用一次初始(pthread_once_t); 首先要定义一个pthread_once_t变量,这个变量要用宏PTHREAD_ONCE_INIT初始化。然后创建一个与控制变量相关的初始化函数pthread_once_t once_control = PTHREAD_ONCE_INIT; 接下来就可以在任何时刻调原创 2017-05-18 19:30:19 · 265 阅读 · 0 评论 -
linux线程学习(4)
线程的同步1. 条件变量 提供线程之间的一种通知机制,当某一条件满足时,线程A可以通知阻塞在条件变量上的线程B,B所期望的条件已经满足,可以解除在条件变量上的阻塞操作,继续做其他事情。 我们需要这种机制,当互斥量被锁住以后发现当前线程还是无法完成自己的操作,那么它应该释放互斥量,让其他线程工作。 1、可以采用轮询的方式,不停的查询你需要的条件 2、让系统来帮你查询条件,使用条件变量pth原创 2017-05-17 17:25:37 · 279 阅读 · 0 评论 -
linux线程学习(3)
线程的同步1. 互斥量 为什么要使用互斥量: 当多个线程共享相同的内存时,需要每一个线程看到相同的视图。当一个线程修改变量时,而其他线程也可以读取或者修改这个变量,就需要对这些线程同步,确保他们不会访问到无效的变量 互斥锁的初始化和销毁: 为了让线程访问数据不产生冲突,这要就需要对变量加锁,使得同一时刻只有一个线程可以访问变量。互斥量本质就是锁,访问共享资源前对互斥量加锁,访问完成后解锁。当互斥原创 2017-05-16 19:10:07 · 215 阅读 · 0 评论 -
linux线程学习(2)
线程的生命周期1、当c程序运行时,首先运行main函数。在线程代码中,这个特殊的执行流被称作初始线程或者主线程。你可以在初始线程中做任何普通线程可以做的事情。 2、主线程的特殊性在于,它在main函数返回的时候,会导致进程结束,进程内所有的线程也将会结束。这可不是一个好的现象,你可以在主线程中调用pthread_exit函数,这样进程就会等待所有线程结束时才终止。 3、主线程接受参数的方式是通过原创 2017-05-15 19:54:02 · 224 阅读 · 0 评论 -
linux线程学习(1)
什么是线程及为什么要有线程?有时又称轻量级进程,程序执行的最小单位,系统独立调度和分派cpu的基本单位,它是进程中的一个实体。一个进程中可以有多个线程,这些线程共享进程的所有资源。 进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程(即线程);二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。 多线程的优势:原创 2017-05-12 22:14:33 · 224 阅读 · 0 评论 -
网络编程小练习
实例:多并发服务器小程序练习:编写一个服务器,可多个客服端进行对齐同时访问。采用多进程的方法实现。 功能:服务器端打印接收的字符串长度,和字符串,客服端ip,以及使用的端口,将服务器接收到的数据会送给客服端,当接收到q时,服务器就与客服端断开连接,关闭sockfd套接字,当接收到h时,向主机发送hello linux。#include <stdio.h> #include <stdlib.h> #原创 2017-06-03 23:57:44 · 255 阅读 · 0 评论