Linux
xiaodu655
这个作者很懒,什么都没留下…
展开
-
Linux中的权限及一些重要目录件(day01)
Linux权限管理: 1.文件访问者的类: 文件和文件目录的所有者:u—User 文件和文件目录的所有者所在的组的用户:g—-Group 其他用户:o—-Other2.文件访问基本权限: i:读权限(r) ii:写权限:(w) iii:执行权限(x) 3.文件访问权限的相关设置方法: a)chmod: 功能:设置文件的访问权限 格式:chmod [参数] ...原创 2017-11-19 20:52:35 · 320 阅读 · 0 评论 -
信号的三种状态及信号集函数
关于信号的基本概念,请看博客:信号的基本概念及产生信号 本节重点: 1.信号的三种状态 2.信号在内核中的表示(三张表)信号在进程pcb中的表示方法 3.信号集操作函数 —————————————————————————————————————————————————————下面来进行一一介绍: 上篇我说到的信号的三种处理方式: 1.忽略此信号。 2.执⾏行该信号的默认处理动...原创 2018-05-08 21:48:29 · 6473 阅读 · 0 评论 -
信号的捕捉及认识竞态条件
本节重点: 1.信号的捕捉(内核如何实现信号的捕捉) 2.信号捕捉的相关函数 3.实现mysleep函数(1)、(2改良版) 4.可重入函数的简单介绍 5.竞态条件与sigsuspend函数 ———————————————————————————————————————————————————— 1.信号的捕捉(内核如何实现信号的捕捉): 之前我们说过信号被递达之后并不是立即对其进...原创 2018-05-09 22:17:17 · 287 阅读 · 0 评论 -
进程间通信(共享内存)
共享内存的概念:<没有同步与互斥机制,生命周期随内核> 共享内存就是两个或多个进程占有一段内存空间,同一块物理内存空间被映射到两个进程,两个进程都可以访问这段共享空间,从而实现了进程间通信,但其只有数据交换的功能,并没有提供同步与互斥机制。 共享内存是最快的ipc形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不涉及到内核。 共享内存区进程间的数据传递: (...原创 2018-05-04 20:17:18 · 211 阅读 · 0 评论 -
SIGCHLD信号与父进程异步等待子进程
阻塞式等待:wait函数,当然waitpid函数当其第三个参数不为WNOHANG时也是阻塞式等待。 非阻塞式等待:(轮询的方式):当waitpid函数当其第三个参数为WNOHANG是非阻塞式等待。父进程可以阻塞等待子进程结束,也可以非阻塞地查询是否有子进程结束等待清理(也就是轮询的方式)。 若采用阻塞等待方式,父进程就不能处理自己的工作了;采用非阻塞方式,父进程在处理自己工作的同时还要时不...原创 2018-05-11 17:37:09 · 696 阅读 · 0 评论 -
进程间通信(信号量)
信号量:是一种计数器,代表空闲的可用资源的数目。信号量本身也是临界资源,对临界资源进行保护。 由于是用于同步与互斥的,下面来看看同步与互斥的概念。 同步:直接制约关系,指多个进程(或线程)为了合作完成任务,必须按照规定的次序来运行。互斥:间接制约关系,指系统中的某些共享资源,一次只能允许一个线程访问,当一个线程正在访问该临界资源时,其他的线程必须等待。临界资源:系统中的某些资源一次只...原创 2018-05-05 22:01:43 · 366 阅读 · 0 评论 -
线程的相关概念及线程控制
本节重点: 1.线程的基本概念,线程与进程的区别与联系。 2.线程id与进程id。 3.线程控制(线程创建、线程等待、线程终止)。 4.线程分离。———————————————————————————————————————————————— 1、线程的基本概念,线程与进程的区别与联系。线程的概念: <1>.线程是调度的基本单位、线程是一个进程内部的控制序列。 ...原创 2018-05-14 21:28:46 · 209 阅读 · 0 评论 -
信号的基本概念及产生信号
本节讲述重点: 1.信号的基本概念: 2.一些常用的特殊信号的深入了解(用代码呈现) 3.了解核心转储Core Dump 4.信号的产生方式:(4种)(mykill代码)1.信号的基本概念: 首先使用kill -l命令查看系统定义的信号列表: 由于没有32、33信号,所以信号共有62个。其中编号34以上为实时信号,我们先来讨论34以下的信号。 我们来看看signal(7),可...原创 2018-05-08 12:24:07 · 1925 阅读 · 0 评论 -
线程同步与互斥。(互斥量与条件变量、Posix信号量)
线程互斥: 所谓互斥:即是间接制约关系,指系统中的某些共享资源,一次只允许一个线程访问,当一个线程正在访问该临界资源时,其它线程必须等待。mutex(互斥量):互斥量本身也是一把锁,提供对资源的独占访问。大部分情况下,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,变量归属于某个单个线程,其它线程无法获得这种变量。共享变量:很多变量需要在线程间共享,可以通过数据的共享,完...原创 2018-05-28 17:19:53 · 327 阅读 · 0 评论 -
生产者消费者模型
生产者消费者模型简单来说就是“321原则(只是为了理解生产者消费者模型所取的)” ‘3’代表的是三种关系 生产者与消费者的互斥与同步关系生产者与生产者的互斥(或竞争)关系消费者与消费者的互斥(或竞争)关系 ‘2’代表两种角色 生产者:往交易场所放东西(在计算机中一般都是数据)的人消费者:从交易场所取东西的人‘1’代表一个交易场所(类似于一个仓库) 所谓交易场所就是内存...原创 2018-05-28 19:15:21 · 235 阅读 · 0 评论 -
守护进程
本节重点: 1.认识守护进程 2.守护进程的相关函数 3.创建守护进程 ———————————————————————————————————————————————— 1.认识守护进程守护进程:其也称为精灵进程,是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理发生的事件。 守护进程不受用户登陆与注销的影响,它一直在运行着。Linux下的大多数服务器...原创 2018-05-30 01:05:28 · 9537 阅读 · 0 评论 -
死锁的相关知识
1. 什么是死锁: 死锁是指两个或两个以上的进程在执行的过程中,因为争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去,此时成系统处于死锁状态或系统产生了死锁。 2.死锁的原理: 指的是一组线程被阻塞了,等待一个永远不会为真的条件,是一组相互竞争资源或进行通信的进程间的永久阻塞 3.死锁产生的四个必要条件互斥条件:一次只有一个进程(线...原创 2018-05-30 18:15:23 · 191 阅读 · 0 评论 -
静态库与动态库的实现及makefile的编写
静态库(.a):程序在编译链接时将库的代码链接到可执行文件中。程序运行时将不再需要静态库。 缺点:文件会变大。 下面用一个例子来说明静态链接库: 有add.c、sub.c、mul.c、div.c文件,实现加减乘除。 add.h#pragma onceint add(int a,int b); add.c 1 #include"add.h" 2 ...原创 2018-04-03 20:56:50 · 1294 阅读 · 0 评论 -
进程间通信(消息队列)
消息队列:提供了一个从一个进程向另外一个进程发送一块有类型数据块的方法。 消息队列的不足: 每个消息的最大长度是有限的(MSGMAX),每个消息队列的总的字节点是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)。 IPC对象数据结构 内核为每个IPC对象维护一个数据结构:(System V进程间通信的结构体)struct ipc_perm{...原创 2018-04-15 23:19:49 · 206 阅读 · 0 评论 -
yum提示Another app is currently holding the yum lock; waiting for it to exit...
使用yum安装计划任务功能,结果提示:# yum -y install vixie-cronLoaded plugins: fastestmirror, refresh-packagekit, securityExisting lock /var/run/yum.pid: another copy is running as pid 25960.Another app is curren转载 2017-12-02 21:13:08 · 129 阅读 · 0 评论 -
linux下的gdb调试(1)
用 GDB 调试程序GDB 概述————GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。一般来说,转载 2017-12-03 19:50:27 · 260 阅读 · 0 评论 -
linux下预处理、编译、汇编、链接及gdb调试
我们知道一个程序需经过预处理、编译、汇编、链接四个过程。下面小小的说一下这几个过程。 预处理: (1)、头文件的包含 (2)、#define定义的标识符转换原创 2017-12-07 21:35:58 · 400 阅读 · 0 评论 -
进程的简单介绍(1)
调研进程的调度算法. 调研task_struct结构体, 理解结构体中的各个字段的含义. 使用代码模拟实现僵尸进程, 孤儿进程的场景. 同学们课后自行找到 <<深入理解计算机系统>> 虚拟内存相关章节. 同学们课后自行找到 <<操作系统精髓设计原理>> 进程相关章节. 练习使用setenv, export等环境变量相关的函数和命令. ...原创 2018-03-22 23:58:24 · 270 阅读 · 0 评论 -
Linux的一些基本命令
在介绍命令前,先介绍几个相关目录: /代表根目录。 ./代表当前目录,一般会将/省去。 . . 代表上一级目录 Linux系统中,磁盘上的文件和目录被组成一颗目录树,每个节点都是目录或文件。 家目录:一般普通用户,家目录是/home/用户名。如/home/dutian root用户,家目录是/root 如何普通用户切换到root用户:su root passwd: 如何...原创 2018-03-19 17:29:02 · 146 阅读 · 0 评论 -
编写一个shell
编写shell的过程: 1.从标准输入中读入一个字符串。 2.解析字符串 3.创建一个子进程的执行程序。 4.子进程程序替换。 5.父进程等待子进程退出。 2 #include<stdlib.h> 3 #include<unistd.h> 4 #include<sys/wait.h> 5 #include<string.h&...原创 2018-03-29 22:41:27 · 361 阅读 · 0 评论 -
Linux的一些基本命令
在介绍命令前,先介绍几个相关目录: /代表根目录。 ./代表当前目录,一般会将/省去。 . . 代表上一级目录 Linux系统中,磁盘上的文件和目录被组成一颗目录树,每个节点都是目录或文件。 家目录:一般普通用户,家目录是/home/用户名。如/home/dutian root用户,家目录是/root 如何普通用户切换到root用户:su root passwd: 如何...原创 2018-03-20 18:15:21 · 182 阅读 · 0 评论 -
基础IO(fd与FILE结构体 )
练习open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体 对之前编写的自主shell进行修改,使其支持输入/输出/追加重定向 <1>.open函数: 函数原型: int open(const char *pathname, int flags); int open(const char *pathname, int f...原创 2018-03-31 23:31:04 · 1325 阅读 · 0 评论 -
进程控制
学习进程创建, 等待, 终止. 使用代码实现. 编写自主shell. 封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数. 调研popen/system, 理解这两个函数和fork的区别. 写一篇博客, 总结上述内...原创 2018-03-26 20:34:21 · 228 阅读 · 0 评论 -
进程间通信(管道)
进程间通信目的: <1>.数据传输:一个进程需要将它的数据发送给另一个进程。 <2>.资源共享:多个进程之间共享同样的资源。 <3>.通知事件:一个进程需要向另一个进程发送消息,通知它发生了某种事件(如进程终止时要通知父进程)。 <4>.进程控制:有些进程需要完全控制另一个进程的执行(如debug进程)。 进程间通信分类: 管道: .匿...原创 2018-04-09 19:58:40 · 224 阅读 · 0 评论 -
调研popen/system, 理解这两个函数和fork的区别.
. 调研popen/system, 理解这两个函数和fork的区别. : system()函数 函数原型#include <stdlib.h>int system(const char *command);system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的...原创 2018-03-27 19:00:43 · 640 阅读 · 0 评论 -
grep命令的用法与正则表达式
1. 什么是grep grep它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。 grep命令的常用格式为:grep [选项] ”模式“ [文件] grep家族总共有三个:grep,egrep,fgrep。2.常用选项-v:反过来(invert),只打印没有匹配的,而匹配的反而不打印。-i:忽略大小写-q:不向标准输出写任何东西。如果找到任何匹配的...原创 2018-07-05 17:45:36 · 2644 阅读 · 0 评论