![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
窗户外你的名字
这个作者很懒,什么都没留下…
展开
-
【Linux】进程间通信
进程间信号:信号更多的是通知事件的发生,信号产生之后第一时间也不是直接处理而是先存储下来,处理信号 信号的产生-》信号的注册-》(信号的阻塞)-》信号注销-》信号处理Linux先有62种信号使用 kiil-l 查看信号分两类:1-31不可靠信号 34-64可靠信号(实时信号)产生:1.通过硬件中断产生 ctrl + c2.程序异常 SIGFPG SIGSEGV unix...原创 2018-11-06 20:22:48 · 181 阅读 · 0 评论 -
生产者消费者模型
我们在这里定义一个生产者消费这模型,及供求关系生产者在没有货时候,买家是不能买到东西的消费者之间存在原子性操作总的条件因素应该就是这样了,抱着这个操作,我们完成一个试着完成一个模型。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>...原创 2018-12-24 17:22:43 · 217 阅读 · 0 评论 -
线程创建当中遇到的一些自我理解
首先说明一下我们的线程是在Linux下创建的,即pcb模拟线程。 扫一眼man手册里面的用法说明创建线程int pthread_create(pthread_t *thread, pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);thread: 用于获取线程id(用户态的线程id)attr: ...原创 2018-12-23 16:34:13 · 184 阅读 · 0 评论 -
用命名管道实现两个进程间通信
首先说明一下匿名管道和命名管道之间的区别匿名管道根据其名字就可以理解到这个管道是隐藏在深海当中不可间的,使用我们进程间要是没有点练习连这条管道都找不到。但是如果我们嗯是想在两个不相关的文件当中通信的话,凭自己的理解来说我们无法找到这个管道,不相关文件就无法通信。所以我们需要使用一种特殊的管道,他的名字就是命名管道。创建命名管道的方法 通过命令创建命名管道的文件$...原创 2018-12-21 22:04:18 · 3270 阅读 · 0 评论 -
重定向
首先我们先来看一下重定向之输出重定向的基本流程理解。我们需要知道我们的文件描述符是什么了?通过自己理解浅显不深入的说文件描述符是一个进程指向一个文件结构体(file_struct)数组的下标,当然这个下标也是从0开始的,而且默认打开0,1,2对应的都是这个进程关联控制文件的功能。 即分别对应stdin(输入),stdout(输出),stderr(标准错误)。 我们的c库函数只是对这些系...原创 2018-12-21 16:25:14 · 272 阅读 · 0 评论 -
系统I/O
先看一下man手册对系统调用接口的说明> int open(const char *pathname, int flags, mode_t mode);pathname: 要打开的文件名flags:选项标志O_RDONLY 只读O_WRONLY 只写O_RDWR 读写 O_CREAT 文件不存在则创建,存在则打开 ...原创 2018-12-21 14:24:35 · 237 阅读 · 0 评论 -
网络编程基础概念理解
协议:网络之中主机进行通信必须使用相同的协议。(相同的光电信号格式)计算机如何传输数据:光电波信号0101110011------》0101110011协议就是一个相互都能识别的约定网络中生产厂商很多,协议很多,都用自己的协议将导致网络上主机间无发正常通信,所以要设计一个标准协议,这时候网络间数据传输就可以通信了。5g通信波长的约定。在网络通信里面,为了让使用起来更加方便,因此...原创 2018-12-08 15:23:05 · 214 阅读 · 0 评论 -
互斥锁的使用
多个线程临界资源争抢写入操作会造成逻辑混乱/数据丢失二义性,因此就引入线程安全概念。 线程使用本身就是线程间通信方便成本低而广为使用。这样的话就无法避免资源争抢操作,这时候就必须考虑线程安全。 保证线程安全更多指的是保证数据的安全访问,保证数据访问的原子性不会被打断(互斥/同步)线程间如何实现互斥与同步: 互斥:互斥锁---保证数据的同一时间唯一访问 ...原创 2018-12-08 17:44:55 · 2441 阅读 · 0 评论 -
操纵系统如何通知父进程子进程退出
在不清楚信号时候,我们只知道避免产生僵尸进程,只能让父进程一直等待子进程退出(因为实在不知道子进程什么受退出),浪费了父进程资源。当知道了信号完全可以这样做: 信号:SIGCHLD -17号信号 自定义信号:SIGCHLD的处理方式,相当于提前告诉进程,当接受到这个信号时候使用wait/pid,这样就不用一直等待了。先演示一个僵尸进程的创建:输入命令...原创 2018-12-03 11:37:48 · 1231 阅读 · 0 评论 -
可重入函数与不可重入函数
如果函数在不同逻辑下进行调用会对函数逻辑造成影响这种函数就称之为不可重入函数。不管怎么调用都对函数内部功能程序逻辑不会造成影响,这种函数称之可重入函数。一个函数是否可重入:1.一个函数中是否对全局性数据经行修改操作2.这个操作是否原子性通过创建两个全局临时变量,因为两个变量之间具有原子性来演示可重入函数与不可重入函数的区别void sigcb(int signo){ ...原创 2018-12-03 11:09:35 · 194 阅读 · 0 评论 -
软链接与硬链接
软链接创建命令:ln -s ../filename filename.soft硬链接创建命令:ln ../filename filename.hard 通过ls -l查看当前目录可以发现软链接和硬链接表现上的区别;**软链接创建的是和inode节点相同,软链接文件里面存储的是原文件的一条访问路径,相当于快捷方式。硬链接相当于创建了新的目录项,新的inode节点...原创 2018-11-27 22:09:31 · 119 阅读 · 0 评论 -
通过获取子进程创建的一个迷你版的
整个程序运行分为四部分:写一个shell的入口,用于提示要输入信息scanf接收一个输入信息创建子进程程序替换输入信息:printf("minishell: "); fflush(stdout); char cmd[1024] = {0}; if (scanf("%[^\n]%*c", cmd) != ...原创 2018-11-27 19:12:17 · 184 阅读 · 0 评论 -
僵尸进程与孤儿进程
僵尸进程:子进程比父进程先退出,但是父进程没有回收子进程释放子进程占用的资源空间,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。创建一个僵尸进程demo:僵尸进程危害:1.父进程一直不读取,那么子进程一直处于Z状态2.维护退出状态需要数据维护,所以保存在task_struct(pcb)中,z状态不退出,pcb...原创 2018-11-20 12:44:25 · 118 阅读 · 0 评论 -
线程控制
多线程: 线程是什么? 线程是进程中的一条执行流,Linux下线程是以pcb模拟的。 进程id==线程组id,资源是分配给整个线程组,所以进程是资源分配的基本单位。 线程和进程的优缺点: 线程间通信方便,资源成本低,缺乏访问控制--线程安全需要考虑多 进程因为独立性所以健壮性比较强,通信麻烦,资源成本高。 创建线程...原创 2018-11-17 10:41:55 · 126 阅读 · 0 评论 -
进程等待与退出
* 进程等待就是等待子进程的状态改变,获取子进程的退出状态码, 允许系统释放子进程的所有资源,这时候子进程在所有资源才会被释放掉。 * 进程等待是避免产生僵尸进程的主要方式 进程等待的方式: 1. pid_t wait(int *status) status 用于获取子进程 退出状态码 返回值是返回退出的子进程pid wait 函数目...原创 2018-11-20 20:47:04 · 341 阅读 · 0 评论 -
vfork函数的使用
vfork也是创建一个子进程: 1. 子进程没有(退出)或者运行其他程序则父进程是阻塞的 ,也就意味着子进程是先运行的。 子进程退出(不能在main函数中return)之后,父进程才能运行 2. 子进程先运行的原因: 因为创建出子进程,大多时候都是为了让它运行其他程序 3. 父进程阻塞的原因: vfork创建子进程后,父子进程是...原创 2018-11-20 20:24:32 · 838 阅读 · 0 评论 -
Linux下的重要目录
目录结构:bin:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。dev:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows下的分配盘符)。etc:该目录主要存储一些配置文件。home:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/...原创 2018-11-12 20:41:02 · 136 阅读 · 0 评论 -
Linux进入目录需要的权限,以及在目录中进行基本命令需要的权限。
-rw-r--r--. 1 root root 535 Oct 31 04:44 test.cdrwxr-xr-x. 3 root root 4096 Nov 2 01:15 h一、文件权限-十个字符确定对不同用户能干什么-第一个文件分别代表文件(-)、目录(d)、链接(l)-其余三个字母每三个一个组(rwx) , 每一组分别为所有者,所有组,其他组。(rwx)分别代表 "...原创 2018-11-02 18:33:46 · 1458 阅读 · 0 评论 -
线程池的创建
当我们需要追求性能时候,一个进程的 创建销毁时间也许不算什么,但是当进程需要调用大量进程时候,但是每一个线程运行时间在创建销毁这个线程当中所占比例并不是百分之百,换句话说线程的创建销毁时间是不可以忽略的那么类似与懒汉模式当我们需要创建大量线程时候,就提前创建一组线程然后我们用的时候直接在这个线程组里面拿这样不是牛逼很多了嘛!我们通过一个队列是线程有一个先来后到的顺序,然后在队列中取之运行你要运...原创 2019-01-14 20:22:30 · 152 阅读 · 0 评论