Linux初级
Lonely_Mr_zhang
这个作者很懒,什么都没留下…
展开
-
Linux下的简单C程序gcc编译、gdb调试。
链接:http://pan.baidu.com/s/1dE4Wgt7 密码:i63b原创 2017-03-22 13:02:30 · 768 阅读 · 0 评论 -
Linux进程间通讯(信号量)
信号量信号量主要用于进程间的同步与互斥,类似于计数器,用于标记资源个数。 S > 0:S表示可用资源个数。 S == 0:表示无可用资源,无等待进程。 S < 0:|S|表示等待队列中,等待资源进程资源个数。 进程互斥: 由于进程间要求资源共享,而有些资源一次只能被一个进程访问(临界资源),从而进程间竞争使用这种资源,进程间的这种关系称为进程互斥。 程序中涉及到临界资源...原创 2018-05-02 21:41:11 · 289 阅读 · 0 评论 -
Linux信号
信号的基本概念:信号是操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生,当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断,如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。 注:在Linux系统中,可通过kill -l 查看系统定义的信号列表。34号以上的信号为实时信号,在此不做讨论,...原创 2018-05-05 21:48:11 · 513 阅读 · 0 评论 -
Linux线程
进程与线程的区别和联系:什么是线程? 在程序中的一个执行流就叫做线程。一个进程至少包含一个线程。进程与线程的区别:进程是资源分配的最小单位线程是程序执行的最小单位进程与线程的联系:线程间共享的进程数据:同一地址空间(代码段、数据段等)、文件描述符表、每种信号的处理方式、当前工作目录、用户ID和组ID等。虽然线程间共享进程数据,但也拥有自己的一部分数据:线程ID、一组...原创 2018-05-16 20:16:37 · 245 阅读 · 0 评论 -
Linux进程关系&守护进程
进程组: 每个进程除了是一个单独的进程外,它还属于一个进程组,进程组是一个或多个进程的集合。每个进程除了有一个进程ID外还有一个进程组ID,用于标记该进程属于那个进程组,每个进程组都可以有一个组长进程,组长进程的标识是:其进程ID等于进程组ID,组长进程可以创建一个进程组、创建进程组中的进程、退出(只要进程组中还有一个进程存在,则进程组存在,无论组长进程存在与否),另外,每个进程组的标识是唯一的...原创 2018-06-14 03:06:46 · 253 阅读 · 0 评论 -
Linux网络基础-高级IO之select
深度阅读本文档,总结5种IO模型 深度理解在不同的背景下同步异步的区别 编写select服务器,并总结select优缺点,重点缺点 编写poll服务器,并总结select优缺点,重点缺点 编写epoll服务器,并总结epoll优缺点,重点优点 总结select/poll/epoll各自的优点缺点,整理成表格 总结epoll LT与ET模式,调研两者应...原创 2018-07-17 04:10:39 · 339 阅读 · 0 评论 -
Linux 网络编程socket套接字
socket编程接口: #include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;sys/types.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;sys/socket.h&amp;amp;amp;amp;amp;amp;原创 2018-07-04 17:53:00 · 332 阅读 · 0 评论 -
Linux网络基础-高级IO之poll
编写poll服务器,并总结select优缺点,重点缺点 编写epoll服务器,并总结epoll优缺点,重点优点 总结select/poll/epoll各自的优点缺点,整理成表格 总结epoll LT与ET模式,调研两者应用特点。 poll服务器:优点:缺点:epoll服务器:优点:缺点:LT/ET模式:...原创 2018-07-17 19:15:19 · 301 阅读 · 0 评论 -
Linux网络基础-应用层
深度阅读本文档,理解各层作用,理解各层常见协议 编程实现基本的http服务器代码 总结常见应用层对应端口号(http(80) https(443)) 总结网络常用命令,总结TIME_WAIT状态 总结TCP可靠性保证都有哪些机制,各自保证可靠性当中的那些方面 调研网络当中常见的攻击手法与原理 调研NAT技术与代理服务器的区别,调研常见的代理服务器...原创 2018-07-12 19:55:44 · 1026 阅读 · 0 评论 -
Linux网络基础-高级IO之epoll
编写epoll服务器,并总结epoll优缺点,重点优点 总结select/poll/epoll各自的优点缺点,整理成表格 总结epoll LT与ET模式,调研两者应用特点。 LT/ET模式: select/poll/epoll优缺点总结: epoll()函数:优点:缺点:基于epoll的ECHO服务器:...原创 2018-07-19 03:00:05 · 446 阅读 · 0 评论 -
Linux进程间通讯(消息队列&共享内存)
消息队列:消息队列提供了一种从一个进程向另外一个进程发送“一块”数据的方法。每块数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型。消息队列的每块消息有最大长度的上限(MSGMAX),每个消息队列的总字节数也是有上限的(MSGMNB),系统上消息队列的总数也是有上限的(MSGMNI)。内核为每个IPC对象维护一个结构体(struct ipc_perm),该结构存储了...原创 2018-04-30 11:11:03 · 528 阅读 · 0 评论 -
Linux进程间通讯(匿名管道&命名管道)
匿名管道:什么是管道? 管道是unix中最古老的进程间通讯方式。 具有亲缘关系的两个进程间连接的数据流称为一个管道。 注:yum进程与grep进程同为shell进程创建,所以为兄弟进程。#include <unistd.h>int pipe(int pipefd[2]);说明: 此函数用于创建一个匿名管道。 参数: pipefd[2]:输入输出型参数...原创 2018-04-18 22:59:02 · 281 阅读 · 0 评论 -
popen/system函数与fork函数的区别
popen函数:#include <stdio.h>FILE *popen(const char *command, const char *type);int pclose(FILE *stream);函数说明:popen()函数:首先,调用fork()函数创建一个子进程,执行一个shell命令,其次,调用pipe()函数创建一个管道,与子进程进行通讯。这...原创 2018-04-10 17:53:37 · 371 阅读 · 0 评论 -
Linux下的重要目录、命令讲解以及gcc/g++、gdb、vim的安装
今天,小主为大家讲讲Linux下的基本目录,学习之余以作巩固。 在介绍Linux基本目录之前,我们先来说一说关于目录的权限的问题,大家都知道文件和目录的权限都有r/w/x(读/写/执行)三种权限,那么目录和文件的r/w/x权限作用是否一样呢?还是说它们的r/w/x权限有所区别呢?让我们来一探究竟。 原来,Linux中目录和文件的r/w/x是有区别的,对于普通文件来说:r是指对该文件具有读的权限...原创 2018-03-07 23:56:45 · 401 阅读 · 0 评论 -
Linux下进度条小程序、软件的几种安装方法、进程PCB(task_struck)结构体讲解
彩色进度条程序:#include<stdio.h>#include<unistd.h>//系统调用头文件int main(){ const char sign[]= "-\\|/";//旋转标记字符 char str[1024] = {0};//#进度条字符 size_t i = 0; for(;i<=100;i++){ str[...原创 2018-03-08 23:51:46 · 409 阅读 · 0 评论 -
Linux进程创建、等待、终止以及vfork&return详解
进程控制:进程创建:利用fork()创建一个子进程:#include<stdio.h>#include<unistd.h>int main(){ pid_t id = fork(); if(id < 0){ //fork()失败 perror("fork:"); }else if(id == 0){ /...原创 2018-03-15 17:52:04 · 338 阅读 · 0 评论 -
Linux下fork()&vfork()的区别、getenv()&setenv()函数以及僵尸进程、孤儿进程讲解
在讲解僵尸进程前,我们先来说说其它知识,因为我们一会的代码需要用一个叫fork()的系统调用来创建子进程,所以我们先来聊聊fork()这个系统调用。fork()、vfork()的区别:#include<unistd.h>pid_t fork(void);//pid_t为int的类型别名//fork()是一个比较特殊的函数,调用成功返回两个值,调用失败返回-1....原创 2018-03-14 12:26:58 · 539 阅读 · 0 评论 -
简单shell的实现
#include<stdio.h> #include<string.h>#include<unistd.h>void Run(char *buf,char *argv[]){ while(1){ printf("myshell:>"); int argc = 0; //1.获取命令行 gets(buf); ...原创 2018-03-24 14:51:28 · 334 阅读 · 0 评论 -
模拟实现进程创建函数process_create
利用fork()、wait()等函数模拟实现进程创建函数process_create()函数#include<stdio.h>#include<unistd.h>#include<stdlib.h>typedef void *(*FUNC)(void *); typedef struct Arg{ int reg;} Arg;voi...原创 2018-04-10 10:54:14 · 1502 阅读 · 0 评论 -
支持输入、输出、追加重定向的shell
重定向的原理是关闭相应的标准流文件描述符(stdin(0)、stdout(1)、stderr(2)),打开要重定向的文件并得到文件描述符,因为Linux中文件描述符的分配是从0开始查找第一个没有使用的描述符进行分配,所以打开的文件描述符便会代替标准流文件的描述符达到重定向的作用。 代码如下:#include<stdio.h>#include<string.h>#i...原创 2018-04-15 21:05:26 · 1056 阅读 · 1 评论 -
Linux文件相关系统调用接口、fd文件描述符与FILE结构体对比
文件相关系统调用接口:open():#includ e <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t ...原创 2018-04-16 01:25:23 · 454 阅读 · 0 评论 -
Linux网络基础-传输层
////////////&amp;gt;* 深度阅读本文档,理解各层作用,理解各层常见协议 应用层 /////////////&amp;gt;* 编程实现基本的http服务器代码 /////////////&amp;gt;* 总结常见应用层对应端口号(http(80) https(443)) /////////////&amp;gt;* 调研tcpdump工具的使用方法与常见选项(重点如何抓取tcp,udp,htt...原创 2018-07-14 21:28:25 · 300 阅读 · 0 评论