![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统编程
文章平均质量分 55
superwangxinrui
这个作者很懒,什么都没留下…
展开
-
进程间通信之消息队列
首先来波基本语法1、创建消息队列消息队列是随着内核的存在而存在的,每个消息队列在系统范围内对应唯一的键值。要获得一个消息队列的描述符,只需要提供该消息队列的键值即可,该键值通常由函数ftok返回。key_t ftok(const char *pathname, int proj_id);ftok函数根据pathname和proj_id这两个参数生成唯一的键值。pathname:must refer...原创 2018-03-30 11:51:03 · 322 阅读 · 0 评论 -
浅谈线程(thread)
什么是线程呢?线程和进程又有什么区别和联系呢? 线程是进程的一个执行分支,线程在进程内部运行(指的是线程在进程的虚拟地址空间内运行)。在Linux中,内核看到的线程也是PCB来表示,创建的新PCB和·原PCB共用相同的虚拟地址空间。Linux中用进程来模拟线程,这种线程也称为轻量级进程(LWP),统一了进程和线程的管理。一个进程可以并发多个线程,每个线程并行执行多个任务。线程的存在是为了并发执...原创 2018-04-09 14:41:31 · 304 阅读 · 0 评论 -
操作系统常见面试题
操作系统面试题1、进程和线程的区别?解析:(1)进程是资源的分配的一个独立单元,而线程是CPU调度的基本单元 (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(同一地址空间,文件描述符表),一个进行至少包括一个线程。 (3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程...转载 2018-04-08 20:24:19 · 181 阅读 · 0 评论 -
同步互斥问题(生产者消费者模型)
生产者-消费者问题 经典的同步互斥问题,也称作“有界缓冲区问题”。具体表现为:1.两个进程对同一个内存资源进行操作,一个是生产者,一个是消费者。2.生产者往共享内存资源填充数据,如果区域满,则等待消费者消费数据。3.消费者从共享内存资源取数据,如果区域空,则等待生产者填充数据。4.生产者的填充数据行为和消费者的消费数据行为不可在同一时间发生。 ...原创 2018-03-31 08:44:32 · 2905 阅读 · 0 评论 -
Linux 中模拟实现僵尸进程和孤儿进程
1. 僵死状态(Zombies)是一个比较特殊的状态。当进程退出并且父进程没有读取到子进程的返回代码时就会产生僵尸进程。僵尸进程会,以终止状态保持在进程表中,并且会一直等待父进程读取退出状态码。所以只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。来段代码演示一下:此时运行起来就会产生一个僵尸进程僵尸进程的危害:如果一个父进程创建了很多子进程,就是不回收,就会造成内存泄...原创 2018-03-11 20:03:50 · 433 阅读 · 0 评论 -
linux下重要的目录和重要命令汇总
一,重要目录:/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp (1)/proc proc目录是基于内存的系统文件,通过proc目录可以查看计算机的信息 proc在运行时访问内核内部数据结构、改变内核设置的机制。 这个目录相当于Windows下的计算机系统信息查看以及进程动态查看等等。 这就是proc目录下的文件 ...转载 2018-02-25 16:25:17 · 304 阅读 · 0 评论 -
模拟实现简易版shell
首先介绍一下shell是什么,Linux严格意义上说的是一个操作系统,我们称之为核心(Kernel),但我们一般用户不能直接使用kernel,而是通过Kernel的外壳程序,也就是所谓的shell,来与kernel沟通,从技术角度讲,shell的最简单定义:就是命令行解释器。话不多说,让我们来实现一个简易版的shell.#include<stdio.h>#include<u...原创 2018-03-14 15:53:50 · 868 阅读 · 0 评论 -
进程间通信之匿名管道
大家知道Linux中进程都是相互独立的,但有时进程之间却要进行交流,这时候就要用到我们所说的管道来实现,管道分为匿名管道和命名管道,下边我们来一一介绍一下。 下边我们先来段代码来模拟实现一下匿名管道。这段代码的功能:子进程将数据写入管道,父进程读取管道,写到屏幕。#include<stdio.h>#include<unistd.h>#include<st...原创 2018-03-19 20:37:21 · 215 阅读 · 0 评论 -
进程通信之命名管道
在前面的博客中,提过进程的一种通信方式,匿名管道,匿名管道有个缺点,就是只适合有亲缘关系的进程之间通信。那么为了提供给两个任意进程之间进行通信,又提出了一种方式叫命名管道。 下边我们来实现一下。首先编写两个.c文件,client.c(用来写),server.c(用来读)。client.c(写端):#include <unistd.h>#include <sys/type...原创 2018-03-24 15:40:38 · 331 阅读 · 0 评论 -
Linux常用操作及命令
从这篇文章中你将会学习到: 1. 什么是linux服务器load average?2. 如何查看linux服务器负载?3. 服务器负载高怎么办?4. 如何查看服务器内存使用率?5. 如何查看单个进程占用的内存大小?6. 如何查看正在使用的服务和端口?7. 如何查看服务器进程信息?8. 如何杀死进程?9. 如何查找僵尸进程?10. 为什么启动不了服务器端口...原创 2018-08-13 19:01:45 · 239 阅读 · 0 评论