Linux
Linux学习之路
Xn.er
你可以放弃,但坚持下来一定很酷。
展开
-
Linux进程间通信-匿名管道及命名管道(上)
进程间通信的目的: 数据传输、资源共享、通知事件发生(例如子进程退出时要向父进程发送SIGCHLD信号通知父进程)、进程控制等几种进程间通信方式由于进程之间的独立性 — 每个进程都有自己的虚拟地址空间, 操作的是自己的地址, 因此进程之间无法进行直接通信;那么操作系统是如何完成进程间通信的?给多个进程之间提供一个大家都能访问到的通信介质 –内存,并且操作系统在提供进程间通信方式的时候也根据通信场景的不同提供不同的方式:管道(匿名管道和命名管道)、共享内存、消息队列、信号量管道我们把从一个进程连接到原创 2020-05-25 17:46:35 · 194 阅读 · 0 评论 -
文件描述符fd, 重定向及动态库/静态库的生成与使用
文件描述符fd我们在使用open函数以后, 正常情况下会返回一个文件描述符fd, 那么这个文件描述符是什么东西呢?文件描述符是一个非负整数 —操作文件的句柄本质是个进程打开的文件描述信息表的数组下标, 通过这个下标可以在内核中找到相应的文件描述信息, 通过这个描述信息可以实现文件操作Linux进程默认情况下会有3个缺省打开的文件描述符, 分别是:stdin(标准输入)0 / stdout...原创 2020-05-03 20:47:48 · 446 阅读 · 0 评论 -
Linux系统调用IO接口
除了用标准库中的函数操作文件以外, 我们还可以使用系统接口来进行文件访问, 文件内容修改下面是一些常用的系统调用IO接口:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(co...原创 2020-05-01 17:52:39 · 177 阅读 · 0 评论 -
Linux标准库IO接口
标准库的IO接口:#include <stdio.h>FILE *fopen(const char *path, const char *mode);返回值: 成功将返回一个指向文件对象FILE的指针.否则,将返回 NULLfopen打开文件名为path指向的字符串的文件,将一个流与它关联参数mode指向一个字符串,以下列序列之一开始(序列之后可以有附加的字符):r ...原创 2020-04-26 15:15:28 · 274 阅读 · 0 评论 -
Linux -minishell程序
我们在终端中运行一个程序, 这个程序的父进程实际上是shell程序当我们在shell中输入了一个命令, 这时候其实shell对这个标准输入进行解析, 得到了程序名称. 然后创建子进程, 并且将子进程的程序替换为当前这个解析出来的程序今天, 我们要实现一个minishell程序, 步骤如下:1.等待标准输入获取命令行 fgets()-从标准输入读取一行数据2.获取到标准输入之后,进行字符串...原创 2020-04-22 11:36:56 · 185 阅读 · 0 评论 -
Linux进程控制(2): 进程等待/程序替换
进程等待我们知道, 子进程先退出, 父进程如果不管不顾, 就会导致僵尸进程, 进而造成资源泄漏等严重问题一旦产生僵尸进程, “杀人不眨眼”的kill -9也无能为力, 因为没有办法杀死一个已经僵死的进程那么如何避免产生僵尸进程呢???父进程通过进程等待的方式, 回收子进程资源, 获取子进程退出信息 .这里先说一下阻塞和非阻塞:阻塞: 为了完成某个功能发起一个调用, 若当前不具备完成功能...原创 2020-04-21 17:52:09 · 219 阅读 · 0 评论 -
Linux进程控制(1): 进程创建/进程终止
进程创建fork函数, 创建一个子进程. 从已存在的进程中创建一个新进程. 新进程为子进程, 而原进程为父进程#include <unistd.h>pid_t fork(void); 创建一个子进程返回值:父进程返回子进程的PID,子进程返回0,出错返回-1当一个进程调用fork函数之后, 就有两个二进制代码相同的进程. 而且它们都运行到相同的地方我们看一段代码:#...原创 2020-04-19 11:32:47 · 231 阅读 · 0 评论 -
Linux进程地址空间及内存管理方式
进程地址空间我们先看两段代码:#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ int g_val = 0; pid_t id = fork(); //创建子进程 if(id < 0) { perror("...原创 2020-04-14 14:13:35 · 248 阅读 · 0 评论 -
Linux进程基本概念及环境变量
进程概念书本上的概念定义进程是程序的一个执行实例,正在执行的程序等我们用PCB (process control block) , 进程控制块来描述一个进程, 它是一个进程描述符, 通过这个描述实现对一个程序运行的调度管理, Linux下pcb是一个task_struct结构体task_struct是Linux内核的一种数据结构, 它被装载到RAM(内存)里并且包含着进程的信息task_ ...原创 2020-04-09 22:15:44 · 197 阅读 · 0 评论 -
Linux进度条程序及使用git管理项目
进度条程序代码如下:#include<stdio.h>#include<string.h>#include<unistd.h>int main(){ int i = 0; char bar[102]; memset(bar, 0, sizeof(bar)); const char *lable="|/-\\"; ...原创 2020-04-08 13:10:20 · 269 阅读 · 0 评论 -
Linux开发工具及项目自动化构建工具
Linux编译器 – gcc / g++通常我们所写的C/C++程序, 是一种高级语言程序, 这些程序是cpu无法直接识别的, 需要编译器将我们所写的代码解释成为机器指令之后, 才能执行首先了解一下编译的过程:1.预处理预处理功能主要包括展开头文件, 宏替换, 条件编译, 去注释等例如现在有一个源文件hello.c, 在终端下输入命令:,gcc –E hello.c –o hello...原创 2020-04-07 14:49:28 · 162 阅读 · 0 评论 -
Linux常用工具
软件包管理工具yumyum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器。主要应用在Fedora, RedHat, Centos等发行版上。它是在Linux下维护安装或移除应用的工具首先, 关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!可以通过ping指令验证:在终端下键入:ping www.baidu.com1. 查看软件...原创 2020-03-29 21:52:33 · 190 阅读 · 0 评论 -
使用XShell连接虚拟机及权限
使用 XShell 远程登录 LinuxXShell是一个远程终端软件, 首先我们要到官网 下载安装XShell查看 Linux 主机 ip在终端下敲 ifconfig 指令, 查看到 ip 地址使用 XShell 登录主机在 XShell 终端下敲 ssh [ip]ip 为上一步看到的 ifconfig 结果如果网络畅通, 将会提示输入用户名密码, 输入即可正确登录XShell...原创 2020-03-21 20:45:13 · 1949 阅读 · 0 评论 -
Linux基础指令
Linux下的操作都是在命令行终端下进行的, 无法使用鼠标, 只能使用命令完成功能命令格式: 命令名称 [操作选项] [操作对象]对于一些比较常用的命令, 我做了大致以下几种分类:目录相关:01. ls功能: 浏览目录中的内容, 默认浏览当前所在目录 (当我们第一次打开终端时, 默认会处于家目录, 每个用户都有一个家目录)Linux下显示文件时, 蓝色代表文件夹, 红色表示压缩文件, ...原创 2020-03-20 17:38:20 · 282 阅读 · 0 评论