linux
文章平均质量分 72
小心眼儿猫
这个作者很懒,什么都没留下…
展开
-
Linux学习小记(三)---基本命令
Linux基本命令原创 2018-03-06 21:13:31 · 155 阅读 · 0 评论 -
阻塞信号及相关函数
阻塞信号先来看一下几个常见的信号相关概念: 1实际执行信号的处理动作称为信号递达。 2 信号从产生到递达之间的状态称为信号未决。 3进程可以选择阻塞某个信号。 4被阻塞的信号产生时将一直保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。 5注意:阻塞和忽略是不同的,只要信号被阻塞就永远不会被递达,而忽略就是在递达之后,可选择的一种处理动作。在内...原创 2018-04-10 17:57:21 · 655 阅读 · 0 评论 -
捕捉信号与可重入函数
之前说过,操作系统会在合适的时候对接受到的信号进行相应的处理。 所谓合适的时候就是:进程从内核态返回至用户态时,会检查信号并进行相应的处理动作。 下面详细说一下到底是怎么一回事 1:当我们执行我们写的一个程序时,可能会因为中断,异常或者系统调用从而进入内核 2:进入内核以后,内核就会处理这些中断,异常或者系统调用,处理完以后,内核就会返回用户态,然而再返回之前,做的最后一件事,就是处理当前进原创 2018-04-10 22:11:44 · 256 阅读 · 0 评论 -
进程间通信(一)---管道
进程间通信的目的: 1、数据传输:一个进程需要将他的数据发送给另一个进程 2、资源共享:多个进程间共享同样的资源 3、通知事件:一个进程需要向另一个或一组进程发送消息,通知他(他们)发生了某种事件(如进程终止时要通知父进程)。 4、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道他的状态...原创 2018-04-12 11:22:07 · 512 阅读 · 0 评论 -
守护进程
守护进程也被叫做精灵进程,是运行在后台的一种特殊进程。 他独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程,Linux的大多数服务器就是用守护进程实现的。比如ftp服务器,ssh服务器,Web服务器http等,同时,守护进程完成许多系统任务,比如,作业规划进程crond等。Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能...原创 2018-04-22 18:33:42 · 147 阅读 · 0 评论 -
进程间通信(二)---消息队列
前面我们讲了进程间通信的其中一种方式,进程间通信(一)—管道,现在我们来讲一下另外一种方式就是消息队列。 1: 消息队列提供了从一个进程向另外一个进程发送一块数据的方法。 2:每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。 3:消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数也是有上限的(MSGM...原创 2018-04-12 21:30:47 · 237 阅读 · 0 评论 -
进程间通信(三)---共享内存
共享内存区是最快的IPC形式。一旦这样的内存映射到共享他的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说就是进程不再通过执行进入内核的系统调用来传递彼此的数据。 共享内存示意图 共享内存数据结构struct shmid_ds { struct ipc_perm shm_perm; /* operation perms */ int shm_segsz原创 2018-04-12 23:07:46 · 164 阅读 · 0 评论 -
线程控制(一):线程创建与终止
说在前面:与线程相关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的,要想使用这些函数,要通过引入头文,链接这些线程函数库时要使用编译器命令的“-lpthread”选项创建线程//创建一个新的线程int pthread_create(pthread_t *threade,const pthreade_attr_t *attr,void *(*start_rout原创 2018-04-25 11:34:42 · 421 阅读 · 0 评论 -
线程同步与互斥
mutex互斥量 大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程。 但有时候很多变量都需要在线程间共享,这样的变量称为共享变量,可以通过数据的共享,完成线程之间的交互。 多个线程并发的操作共享变量,会带来一些问题。举个妮子:#include <stdio.h>#include<stdlib.h>#include<string.h原创 2018-04-26 09:15:14 · 149 阅读 · 0 评论 -
笔记:gdb调试多进程
默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。follow-fork-mode与detach-on-fork 说明: follow-fork-mode det...原创 2018-04-27 00:27:42 · 424 阅读 · 0 评论 -
网络编程套接字(一)·预备知识
首先我们需要来认识一下IP地址: IP协议有两个版本,IPv4和IPv6。 1、 IP地址在IP协议中,用来标识网络中不同主机的地址。 2、对于IPv4来说,IP地址是一个4字节,32位的整数。IPv6是128位。 3、我们通常也使用“点分十进制”的字符串标识IP地址,例如:192.168.0.1;用点分割开的每一个数字表示一个字节,范围是0~255。源IP地址:来自于哪...原创 2018-05-11 18:00:58 · 243 阅读 · 0 评论 -
管道、消息队列、共享内存、信号量的特点
在之前我们已经了解过了进程间通信的几种方式:管道、消息队列、共享内存以及信号量。今天我们就来总结一下这几种方式的各自的特点分别是什么,和他们相应的应用场景。也是对于这个知识点的一个复习和巩固。Q1:为什么要有进程间通信??? A1: 1、为了传输数据:一个进程需要将它的数据发送给另外一个进程; 2、为了共享资源:多个进程之间有时需要共享同样的一份资源; 3、为了通知事...原创 2018-08-16 22:52:55 · 2138 阅读 · 0 评论 -
信号的概念和信号的产生
信号的概念: 这里提到信号,也有必要说一下信号量,信号量是进程间通信的一种方式,与现在要讲的信号并无关系。这里要区分开来。当操作系统接受到信号以后,会在合适的时候执行相应的动作。在我们的日常生活中,红绿灯是一种信号。而我们由于从小便被人告知,红灯停绿灯行……这种规则,因此,我们首先记住了红绿灯这个东西,随后,因为我们已经知道了红绿灯所对应的规则,当我们在遇到红绿灯时就会做出相应的动作。这里,操作系原创 2018-04-10 16:36:58 · 380 阅读 · 0 评论 -
系统调用----初步了解文件描述符
在学习操作系统之前,我们在操作文件时会使用一些C接口,比如说,fwrite fread fopen fclose 这些,但是除了这些C接口(其他语言也有),我们还可以使用一些系统调用接口来进行文件访问。例如:写文件(write)代码实现:#include<stdio.h>#include<sys/types.h>#include<s...原创 2018-03-27 22:34:46 · 231 阅读 · 0 评论 -
Linux ---- 权限
linux 权限管理原创 2018-03-06 22:33:04 · 249 阅读 · 0 评论 -
编辑器
Linux学习中接触到vim编辑器。其是vi的升级版,vim兼容vi的所有指令,并且还有语法加亮,可视化操作不仅可以在终端上运行,还可以运行于x window、mac os、Windows。当我们需要使用vim来编辑文件,只需要在终端上输入命令‘’vim [文件名]‘’(如vim hello.c)即可。先来说一说vim最为基本的三种模式及相关操作: 1:命令模式(正常/普通模式) 该模...原创 2018-03-08 11:38:08 · 168 阅读 · 0 评论 -
Linux学习小记(二)---基本命令
Linux基本命令原创 2018-02-28 16:22:01 · 172 阅读 · 0 评论 -
编译器
gcc编译器和初识readelf命令原创 2018-03-08 21:21:32 · 508 阅读 · 2 评论 -
Linux下c语言实现进度条
颜色的处理 要想把进度条加上颜色,我们只需要在需要显示颜色的部分输入颜色编号即可,但是要在最后用\033[0m关闭所有属性,不然程序运行后会在运行后的后续文字中也变为我们之前所设置的颜色。通过控制符即可设置我们需要的颜色:\033[30m– \033[37m设置前景色(30~37:黑,红,绿,黄,蓝,紫,深绿,白)\033[40m– \033[47m设置背景色(40~47:黑,深红,绿...原创 2018-03-08 23:20:57 · 1139 阅读 · 0 评论 -
进程调度
进程调度,进程调度的作用,进程调度算法原创 2018-03-17 22:30:28 · 588 阅读 · 0 评论 -
进程控制块:PCB之task_struct
进程控制块 Linux下的PCB——task_struct原创 2018-03-16 17:43:57 · 629 阅读 · 0 评论 -
popen函数 / system函数 / fork函数
popen() 函数函数定义:FILE* popen ( const char* command , const char* type );int pclose ( FILE* stream );函数说明: 通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。...原创 2018-03-22 21:42:01 · 221 阅读 · 0 评论 -
进程的创建
进程的创建 提到进程创建,我们就需要来认识一下 fork()函数。 fork()从一个已经存在的进程中创建一个新的进程。新进程为子进程,而原进程为父进程。 如果fork()函数调用出错则会返回-1,否则子进程返回0,而父进程返回的是子进程的ID。 调用fork()函数以后,当控制转移到内核中的fork()代码以后,内核会进行以下几项工作:分配新的内存块和内核数据结构给子进程将父进程部...原创 2018-03-22 22:46:18 · 190 阅读 · 0 评论 -
进程间通信(四)---信号量
信号量主要用于同步和互斥的。 进程互斥: 1:由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程竞争使用这些资源,进程的这种关系就叫做进程互斥 2:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源 3:在进程中涉及到互斥资源的程序段叫临界区例如: 进程同步 进程同步指的是多个进程之间相互配合共同完成一项任务 比如我们日常生活中的原创 2018-04-15 13:11:17 · 285 阅读 · 0 评论 -
动态库和静态库
静态库:(.a)程序在编译连接的时候把库的代码链接到可执行文件中,程序运行的时候讲不再需要静态库。动态库:(.so)程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件整个机器码。在可执行文件开始运行以前,操作系统将外部函数的机器码从磁盘上的该动态库中复制到内存中,这个过程称为动态链...原创 2018-03-27 17:59:59 · 147 阅读 · 0 评论 -
Linux根目录下几个重要目录的作用以及软件包管理器yum基本介绍
Linux根目录(/)下几个重要目录作用 /proc : 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里/bin : 二进制可执行命令。该目录下存放着普通用户的命令/dev:系统的设备文件,即设备的驱动程序/sys:管理设备文件/usr/lib : 所有可执行文件所需要的库文件/var ...原创 2018-03-05 23:04:52 · 409 阅读 · 0 评论