![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux学习笔记
文章平均质量分 72
无
weixin_58670878
这个作者很懒,什么都没留下…
展开
-
TCP 三次握手 四次挥手
全称为(传输控制协议),是一种、、的传输层通信协议。TCP是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。三次握手就是为了确定tcp通信双方都具有数据收发的能力。得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信的能力。第一次握手:客户端发送SYN,服务端接收,服务端得出客户端的发送能力和服务端的接收能力都正常第二次握手:服务端发送SYN+ACK,客户端接收,客户端得出客户端发送接收能力正常,服务端发送接收能力也都正常第三次握手:客户端发送ACK,服原创 2022-06-08 16:37:01 · 133 阅读 · 0 评论 -
Linux 网络编程
前面学习的进程间通信:管道、消息队列、共享内存、信号、信号量 这5种通信方式都是依靠Liunx内核。他们的一个缺点就是,这些通信方式只能在单机运行。所以引入网络编程可以实现多机通讯 网络的通讯 Linux与Android、IOS、各种单片机,或者是Android对Android等等。1.何为网络通讯:通过通信双方地址。地址由IP地址和端口号组成。 ①IP地址:负责定位主机。 ②端口号:负责定位主机上的特定应用(主机上有着多种协议)。端口号作用 一台拥有IP地址的主机可以提供许多服务,比如Web服务、 FTP原创 2022-06-08 13:01:38 · 106 阅读 · 0 评论 -
进程通信 信号
1.信号的概述: 每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIINT”、“SIGUP”等等。 信号定义在signal.h头文件中,信号名都定义为正整数。 具体的信号名称可以 使用kill -l来查看信号 的名字以及序号, 信号是 从1开始编号的,不存在0号信号。kill对于信号0有特殊的应用。2.信号的处理(3种情况):①忽略信号:大多数信号可以使用这个方式来处理,但是有两种信号不能被忽略(分别是 SIGKILL和SIGSTOP)。因为他们向内核和超级用户提供了进程终止和停止的可靠原创 2022-06-07 16:04:34 · 67 阅读 · 0 评论 -
Linux进程间通信(管道,FIFO,消息队列,信号量,共享内存)
进程间通信:简称ipc(Inter-Process Communication)。进程间通信是指两个进程的数据之间产生交互。 一.无名管道(pipe) 1.特点: ①半双工(即数据只能在一个方向上流动),具有固定的写端和读端 ②只能用于父子进程或兄弟进程之间 ③可以把它当做是一个文件使用read等函数操作,但它不是普通文件,并不属于其他文件系统,只存于内存中。 2.原型: 1. #include <unistd.h> 2. Int pipe(int fd[2]); //返回值,原创 2022-06-07 10:07:56 · 297 阅读 · 0 评论 -
popen的使用
作用: 用于执行程序将执行结果返回到一个文件流中 注意: 使用完必须用pclose关闭,不然会产生僵尸进程 原型: FILE *popen(const char *command, const char *type); command:要执行的命令/程序 type:只能是r(只读)或者w(只写)的一种,因为popen会创建一个pipe管道去处理 上代码: 执行 ls -l 并把它放在ret.txt里面 #include <stdio.h> #include <st.原创 2022-05-28 03:33:35 · 180 阅读 · 0 评论 -
exec族函数
介绍:exec函数族提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行的脚本文件 原型: #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg,原创 2022-05-28 02:47:24 · 42 阅读 · 0 评论 -
进程和线程的区别
基本概念: 进程:进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。 在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。线程: 线程是操作系统能够进行运算调度的最小单位。 它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程包含了表示进程内执行环境必须的信息,其中包括进程中表示线程原创 2022-05-28 00:09:59 · 78 阅读 · 0 评论 -
Linux多线程编程
一.线程是啥 介绍:典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。 进程是程序执行时的一个实例,进程本身不是基本运行单位,而是线程的容器。 总结:进程——资源分配的最小单位,线程——程序执行的最小单位 二.pthread库使用 多线程开发在 Linux 平台上已经有成熟的 pthread 库支持,多线程开发的最基本概念主要包含三点: 1.线程(三种):①创原创 2022-05-27 02:55:55 · 144 阅读 · 0 评论 -
Linux进程
一.进程概念 1.什么是程序,什么是进程,有什么区别? 程序是一个静态的概念 gcc xxx.c -o pro 磁盘中生成的pro文件叫做程序 进程是程序的一次运行活动,也就是说程序运行起来了就是一个进程 2.如何查看系统中有哪些进程? ①用ps -aux指令查看所有进程 用ps -aux|grep xxx 来查看指定进程名 ②使用top指令来查看,类似于windows的任务管理器 3.什么是进程标识符? 每个进程都有一个非负整数表示的唯一id,叫做pid。(每次程序执行的时候,操作系统都会重新原创 2022-05-25 01:21:52 · 67 阅读 · 0 评论 -
fopen和open的区别
Open和fopen的区别 1. 来源 从来源的角度看,两者能很好的区分开,这也是两者最显而易见的区别: open是UNIX系统调用函数(包括LINUX等),返回的是文件描述符(File Descriptor),它是文件在文件描述符表里的索引。 fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api。返回的是一个指向文件结构的指针。 PS:从来源来看,两者是有千丝万缕的联系的,毕竟C语言的库函数还是需要调用系统API实现的。 2. 移植性 这一点从上面的来...原创 2022-05-24 05:20:31 · 57 阅读 · 0 评论 -
Linux文件编程fopen系列函数
函数原形: FILE *fopen(const char *path, const char *mode); size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream); //size元素大小,nmemb元素个数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); int fseek(FILE *stream, long offset, int when原创 2022-05-24 05:18:19 · 323 阅读 · 0 评论 -
Linux文件编程open系列函数使用
函数原形: int open(const char *pathname, int flags);// 两个参数 int open(const char *pathname, int flags, mode_t mode);//三个参数,一般用于打开并创建 open 返回的值称为文件描述符(它的作用域是当前进程,失败时返回-1) pathname 是一个指向文件路径的指针 flags 文件权限: O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR 可读可写打开 O_C原创 2022-05-24 04:46:04 · 177 阅读 · 0 评论