linux
文章平均质量分 76
lilboom
这个作者很懒,什么都没留下…
展开
-
linux系统编程之网络编程
linux系统编程之网络编程一、引言在进程间通信中了解了各种UNIX系统所提供的经典进程间通信机制(IPC)、‘管道、FIFO、消息队列、信号量以及共享内存。这些机制允许在同一台计算机上运行的进程可以相互通信。与其不同的是,网络进程通信(network IPC)是不同计算机(通过网络连接)上的进程相互通信的机制。我们将描述套接字网络进程间通信接口,进程用该接口能够和其他进程通信,无论它们是在同一台计算机还是在不同的计算机上。实际上,这正是该套接字接口的设计目标之一:同样的接口既可以用于计算机间通信,也原创 2021-08-23 17:01:24 · 477 阅读 · 0 评论 -
Linux系统编程之线程同步
Linux系统编程之线程同步一、线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,临界区对象就是其中一种。二、简介在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。但是多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地址进行写入,由于CPU时间调度上的问题,写入数据会被多次的覆盖,所以就要使线程同步。同步就是协同步调,原创 2021-08-19 15:51:48 · 291 阅读 · 0 评论 -
Linux系统编程之线程共享内存空间的代码验证
Linux系统编程之线程共享内存空间的代码验证同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。那么该如何验证呢,请参考以下代码:#include <stdio.h>#include <pthread.h>#include <unistd.h>原创 2021-08-19 10:50:15 · 129 阅读 · 0 评论 -
Linux系统编程之线程的创建,等待和退出
Linux系统编程之线程的创建,等待和退出一、线程的创建NAME pthread_create - create a new threadSYNOPSIS #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr,void *(*start_rtn) (void *), void *re原创 2021-08-19 10:43:09 · 206 阅读 · 0 评论 -
Linux系统编程之线程介绍
Linux系统编程之线程介绍一、线程的概念线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。 —百度百科典型的UNIX进程可以看成只有一个原创 2021-08-19 10:42:54 · 105 阅读 · 0 评论 -
Linux进程间通信之信号量
Linux进程间通信之信号量一、定义:信号量与已经介绍过的IPC机构(管道、FIFO以及消息队列)不同,它是一个计数器,用于为多个进程提供对共享数据对象的访问(共享资源)。注:在计算机领域,共享资源(shared resource)或网络共享(network share)是指使同一个计算机网络上的其他计算机可使用的某台计算机的计算机资源的行为。换而言之,是使计算机上的一种设备或某些信息可通过另一台计算机以局域网或内部网进行远程访问,且过程透明,就像资源位于本地计算机一般。网络共享可能通过网络上的进程间通原创 2021-08-18 21:59:29 · 320 阅读 · 0 评论 -
Linux进程间通信之信号
Linux进程间通信之信号一、定义:信号机制是一种使用信号来进行进程之间传递消息的方法,信号的全称为软中断信号,简称软中断。信号的本质是软件层次上对中断的一种模拟(软中断)。它是一种异步通信的处理机制,事实上,进程并不知道信号何时到来。二、在头文件<signal.h>中定义了64种信号,这些信号的名字都以SIG开头,且都被定义为正整数,称为信号编号。可以用“kill -l”查看信号的具体名称。三、信号的产生Linux中的信号可以由以下几种方式产生:·当用户按下某些终端按键后引发终端产原创 2021-08-18 21:31:02 · 489 阅读 · 0 评论 -
Linux进程间通信之共享存储
Linux进程间通信之共享存储一、定义:共享存储允许两个或多个进程共享一个给定的存储区。因为数据不需要在客户进程和服务器之间复制,所以这是最快的之中IPC。使用共享存储时要掌握的唯一窍门是,在多个进程之间同步访问一个给定的存储区。若服务器进程正在将数据放入共享存储区,则在它做完这一操作之前,客户进程不应当去取这些数据。通常,信号量用于同步共享存储访问。(不过正如部分所述,也可以用记录锁或者互斥量)二、特点:1.共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。2.因为多个进程可以同时操作原创 2021-08-18 15:56:41 · 455 阅读 · 0 评论 -
Linux进程间通信之消息队列
Linux进程间通信之消息队列一、引言:管道只能在一端读一端写,有一些局限性,而消息队列功能性更强,可以相互发送数据。二、什么是消息队列:消息队列是消息的链接表,存储在内核中,由消息队列标识符标识。在本节中,我们把消息队列简称为队列,其标识符简称为队列ID。消息队列由内核来管理,我们只需要掌握如何创建或打开一个现有的消息队列,如何将新消息添加至指定队列尾端和从队列中获取消息,和控制消息队列(如删除消息队列)。注:每个消息由3部分组成:一个正的长整型类型的字段、一个非负的长度(nbytes)和实际原创 2021-08-16 18:09:42 · 187 阅读 · 0 评论 -
Linux进程间通信之标识符和键
Linux进程间通信之标识符和键每个内核中的IPC结构(消息队列、信号量或者共享存储段)都用一个非负整数的标识符(identifier)加以引用。例如,要向一个消息队列发送消息或者从一个消息队列取消息,只需要知道其队列标识符。与文件描述符不同,IPC标识符不是小的整数。当一个IPC结构被创建,然后又被删除时,与这种结构相关的标识符连续加1,直至达到一个整型数的最大正值,然后又回转到0.标识符是IPC对象的内部名。为使多个合作进程能够在同一IPC对象上汇聚,需要提供一个外部命名方案。为此,每个IPC对象都原创 2021-08-16 16:46:09 · 231 阅读 · 0 评论 -
Linux进程间通信之FIFO
Linux进程间通信之FIFO一、引言:FIFO有时被称为命名管道。未命名的管道只能在两个相关的进程之间使用,而且这两个相关的进程还要有一个共同的创建了它们的祖先进程,但是,通过FIFO,不相关的进程也能交换数据。二、...原创 2021-08-16 11:16:35 · 655 阅读 · 0 评论 -
Linux 进程间的通信之管道
Linux 进程间的通信之管道一、引言:管道有无名管道和命名管道,在这里我们先介绍无名管道,无名管道是Linux系统内核的特殊文件,用于父子进程之间的通信。二、特点:①半双工通信,即数据流只能在一个方向上流动②亲缘进程之前的通信(父子进程和兄弟进程)③特殊的一种文件,不属于任何文件系统,只存在于在内存中包含头文件:#include <unistd.h>三、无名管道通信原理:1.下面描绘了两种半双工管道的方法左图显示管道的两端在一个进程中的相互连接,右图强调数据需要通过内核在管道原创 2021-08-15 20:18:41 · 94 阅读 · 0 评论 -
Linux进程间通信的介绍
Linux进程间的通信一、引言:在进程中说明了进程控制原语,并且观察了如何调用多个进程。但是这些进程之间交换信息的唯一途径就是传送打开的文件,可以经由fork或exec来传送,也可以通过文件系统来传送。下面将说明进程之间相互通信的其他技术——进程间通信(InterProcess Communication,IPC)。二、概述:进程间通信就是在不同进程之间传播或交换信息进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系原创 2021-08-14 10:31:20 · 78 阅读 · 0 评论 -
Linux下使用函数popen和pclose
Linux下使用函数popenNAME popen, pclose - pipe stream to or from a processSYNOPSIS #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); //popen 的返回值是个标准 I/O 流,必须由 pclose 来终原创 2021-08-13 17:33:12 · 199 阅读 · 0 评论 -
Linux函数system
Linux函数system与exec的区别1、system()和exec()都可以执行进程外的命令,system是在原进程上开辟了一个新的进程,但是exec是用新进程(命令)覆盖了原有的进程。2、system()和exec()都有能产生返回值,system的返回值并不影响原有进程,但是exec的返回值影响了原进程。NAME system - execute a shell commandSYNOPSIS #include <stdlib.h>原创 2021-08-13 16:57:02 · 57 阅读 · 0 评论 -
Linux函数exec
Linux函数exec一、概述:当用fork函数创建新的子进程后,子进程往往要调用一种exec函数以执行另一个程序。当程序调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用磁盘上的一个新程序替换了当前进程的正文段、数据段、堆段和栈段。三、有7种不同的exec函数可供使用,它们常常被统称为exec函数。 #include <unistd.h> e原创 2021-08-13 10:34:49 · 4058 阅读 · 0 评论 -
Linux进程退出
Linux进程退出一、进程终止方式:进程有5种正常终止及三种异常终止方式5种正常终止方式具体如下。(1) 在main函数内执行return语句。(等效于调用exit)。(2) 调用exit函数。(3) 调用_exit或_Exit函数。(4) 进程的最后一个线程在其启动例程中执行return语句。(5) 进程的最后一个线程调用pthread_exit函数。3种异常终止:(1) 调用abort。(2) 当进程接收到某些信号时。(3) 最后一个线程对“取消”(cancellation)请求作原创 2021-08-11 10:52:35 · 4259 阅读 · 0 评论 -
Linux进程之函数fork与vfork
Linux进程之函数fork与vfork原创 2021-08-01 21:07:20 · 204 阅读 · 0 评论 -
Linux进程相关概念
Linux进程相关概念一、概述进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。二、特征:①动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。②并发性:任何进程都可以同其他进程一起并发执行③独立性:进程是一个能独立运行的基原创 2021-08-01 14:59:46 · 124 阅读 · 0 评论 -
Linux文件编程
linux 文件编程文件操作相关函数linux 文件编程openopen一、引言:可用的文件I/O函数——打开文件、读文件、写文件等。UNIX系统中的大多数文件I/O只需用到5个函数:open、read、write、lseek以及close。然后说明不同缓冲长度对read和write函数的影响。二、文件描述符:对于内核而言,所有打开的文件都通过描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用open或creat返回的文原创 2021-07-29 22:13:37 · 61 阅读 · 0 评论