
Linux
文章平均质量分 83
Linux
Hardy20200507
树立终生学习理念,付诸行动。
展开
-
Linux多线程
学习Linux编程前的准备socket通信基础封装socketLinux多进程的应用Linux多线程Linux调用可执行程序转载 2021-04-04 15:43:22 · 104 阅读 · 0 评论 -
Linux调用可执行程序
在C/C++程序中,经常需要调用其它的程序来先成某项任务,例如其它的C/C++程序、操作系统命令或Shell脚本,C/C++提供了exec函数族和system函数来实现这个功能。一、exec函数族exec函数族提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。还有,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行的脚本文件。ex转载 2021-04-04 15:23:39 · 361 阅读 · 0 评论 -
Linux多进程的应用
前面的章节介绍socket通信的时候,socket的服务端在同一时间只能和一个客户端通信,并不是服务端有多忙,而是因为单进程的程序在同一时间只能做一件事情,不可能一边等待客户端的新连接一边与其它的客户端进行通信。一、并发的服务端如果把socket服务端改为多进程,在每次accept到一个客户端的连接后,生成一个子进程,让子进程负责和这个客户端通信,父进程继续accept客户端的连接,socket的服务端在监听新客户端的同时,还可以与多个客户端进行通信。这就是并发,如下图:1、服务端把book248转载 2021-04-04 14:46:19 · 139 阅读 · 0 评论 -
Linux进程通信
进程的数据空间是独立的,私有的,不能相互访问,但是在某些情况下进程之间需要通信来实现某功能或交换数据,包括:1)数据传输:一个进程需要将它的数据发送给另一个进程。2)共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。3)通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如通知进程退出)。4)进程控制:一个进程希望控制另一个进程的运行。一、进程通信进程通信的方式大概分为六种。1)管道:包括无名管道(pipe)及命名管道(named原创 2021-04-02 10:03:28 · 137 阅读 · 0 评论 -
Linux多进程
一、进程的概念什么是进程?进程这个概念是针对系统而不是针对程序员的,对程序员来说,我们面对的概念是程序,当输入指令执行一个程序的时候,对系统而言,它将启动一个进程。进程就是正在内存中运行中的程序,Linux下一个进程在内存里有三部分的数据,就是“代码段”、”堆栈段”和”数据段”。”代码段”,顾名思义,就是存放了程序代码。“堆栈段”存放的就是程序的返回地址、程序的参数以及程序的局部变量。而“数据段”则存放程序的全局变量,常数以及动态数据分配的数据空间(比如用new函数分配的空间)。系统如果同时运行多个相转载 2021-04-02 09:31:26 · 109 阅读 · 0 评论 -
Linux如何让程序在后台运行
如果要运行程序,在命令提示行下输入程序名后回车,程序被执行,然后等待程序运行完成,在程序运行的过程中,也可以用Ctrl+c中止它。在实际开发中,我们需要让程序在后台运行,没有界面,没有用户输入数据。如果想让程序在后台运行,有两种方法。1、加“&”符号如果想让程序在后台运行,执行程序的时候,命令的最后面加“&”符号。如:./book257 &程序就在后台运行了。在后台运行的程序,用Ctrl+c无法中断,并且就算终端退出了,程序仍在后台运行。如果终端退出了,后台运行原创 2021-04-01 20:11:56 · 2587 阅读 · 0 评论 -
Linux信号
一、signal信号signal信号是Linux编程中非常重要的部分,接下来将详细介绍信号的基本概念、实现和使用,和与信号的几个库函数。signal信号是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断,从它的命名可以看出,它的实质和使用很像中断。信号是进程控制的一部分。1、信号的基本概念软中断信号(signal,又简称为信号)用来通知进程发生了事件。进程之间可以通过调用kill库函数发送软中断信号。Linux内核也可能给进程发送信号,通知进程发生了某个事件(例如内存越界)原创 2021-04-01 19:19:38 · 125 阅读 · 0 评论 -
Linux信号量
一、信号量的概念信号量(信号灯)本质上是一个计数器,用于协调多个进程(包括但不限于父子进程)对共享数据对象的读/写。它不以传送数据为目的,主要是用来保护共享资源(信号量、消息队列、socket连接等),保证共享资源在一个时刻只有一个进程独享。信号量是一个特殊的变量,只允许进程对它进行等待信号和发送信号操作。最简单的信号量是取值0和1的二元信号量,这是信号量最常见的形式。通用信号量(可以取多个正整数值)和信号量集方面的知识比较复杂,应用场景也比较少。本文只介绍二元信号量。二、相关函数Linux中提转载 2021-03-31 16:42:35 · 289 阅读 · 0 评论 -
Linux动态库和静态库
一、源代码的组织我们通常把公用的自定义函数和类从主程序中分离出来,函数和类的声明在头文件中,定义在程序文件中,主程序中要包含头文件,编译时要和程序文件一起编译。示例(public.h)/* * 程序名:public.h,公共功能函数声明的头文件,用于测试静态和动态链接*/#ifndef PUBLIC_H#define PUBLIC_H 1 #include <stdio.h> void func(); // 自定义函数的声明 #endif示例(public.cp原创 2021-03-29 15:58:28 · 392 阅读 · 0 评论 -
Linux共享内存
一、共享内存的概念共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。共享内存(Shared Memory)就是允许多个进程访问同一个内存空间,是在多个进程之间共享和传递数据最高效的方式。操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中,如果某个进程修改了共享内存中的数据,其它的进程读到的数据也将会改变。共享内存并未提供锁机制,也就是说,在某一个进程对共享内存的进行读写的时原创 2021-03-29 11:16:11 · 182 阅读 · 0 评论