
linux学习笔记
文章平均质量分 89
细节决定成败y
这个作者很懒,什么都没留下…
展开
-
makefile快速应用
makefile编译多个文件的简单使用原创 2022-10-16 18:21:16 · 704 阅读 · 1 评论 -
linux文件编程--(1)open.write.read.lseek.close
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport.原创 2021-08-14 11:13:22 · 300 阅读 · 0 评论 -
linux文件编程--(2)fopen.fwrite.fread.fclose.fseek.fgetc.fputc.feof
fopen函数原型FILE *fopen(const char *path, const char *mode);参数:path:需要打开的文件路径mode:文件打开方式(r 读 , w 写 , + 读和写,a 添加内容,b 二进制)r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。加粗样式w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消原创 2021-08-15 12:20:21 · 314 阅读 · 0 评论 -
linux-进程(1)概念
进程关键概念问1.什么是程序,什么是进程,有什么区别?程序是一个静态的概念 gcc xxx.c -o gro 磁盘中生成的gro文件叫做程序进程是程序的一次运行活动,也就是说程序运行起来了就是一个进程问2.如何查看系统中有哪些进程?用ps -aux指令查看所有进程用ps -aux|grep xxx 来查看我们需要的进程 xxx为查看的进程名还可以使用top指令来查看,类似于windows的任务管理器问3.什么是进程标识符?每个进程都有一个非负整数表示的唯一id,叫做pid。pid是程序被原创 2021-08-15 14:49:13 · 132 阅读 · 0 评论 -
linux-进程(2)fork. vfork .进程的退出
fork()函数函数原型 pid_t fork(void);返回值返回两次pid成功:在父进程中返回子进程的pid(非负数),在子进程中返回0。失败:父进程中返回-1,不创建子进程。ps:在使用fork的时候,fork()之前的语句只会执行一次,fork()之后的语句会执行两次,分别是父子进程的执行。父子进程的执行顺序是不一定的。简要概述:引用连接早期的Unix内核:把父进程的所有内容拷贝给子进程Unix系统,用于实现一种傻瓜式的进程创建:当发出fork()系统调用时,内核原样复制原创 2021-08-16 10:49:02 · 1230 阅读 · 0 评论 -
linux--进程(3)exec族. system. popen
exec族函数exec函数族分别是:execl, execlp, execle, execv, execvp, execvpe函数原型#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg, ...);//常用int execlp(const char *file, const char *arg, ...);//常用int execle(const char *pat原创 2021-08-16 16:27:50 · 164 阅读 · 0 评论 -
linux-进程通信(1) 无名管道(PIPE)和命名管道(FIFO)
无名管道pipe特点:(1)它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。(同一时间单向,一端读另一端就是写,管道中数据读走就没了)(2)它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。(3)它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。函数原型 int pipe(int pipefd[2]);由参数pipefd返回两个文件描述符:pipe原创 2021-08-17 17:04:20 · 223 阅读 · 0 评论 -
linux-进程通信(2)消息队列
消息队列消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。特点(1)消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级(链表存放的为结构体)。(2)消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。(3)消息队列可以实现消息的随机查询(链表的特性),也可以按消息的类型读取。常用api int msgget(key_t key, int flag);// 创建或打开消息队列:成功返回队列ID,失败返回-1 int ms原创 2021-08-19 10:22:05 · 263 阅读 · 0 评论 -
linux-进程通信(3)共享内存
共享内存共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区。1.查看系统中的共享存储段:ipcs -m2.删除系统中的共享存储段:ipcrm -m shmid(通过ipcs -m查看得到)特点1、共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。2、因为多个进程可以同时操作,所以需要进行同步。3、信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。步骤1、创建/打开共享内存(shmget)2、进程A连接共享内存,写数据(shma原创 2021-08-19 16:56:19 · 107 阅读 · 0 评论 -
linux-进程通信(4)信号
信号对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件的方法。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。信号的概述每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIINT”、“SIGUP”等等。信号定义在signal.h头文件中,信号名都定义为正整数。具体的信号名称可以 使用kill -l来查看信号 的名字以及序号,信号是 从1开始编号的,不存在0号信号。kill对于信号0有原创 2021-08-21 09:33:17 · 541 阅读 · 0 评论 -
linux-进程通信(5)信号量(实现读者写者问题)
信号量信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。原理临界资源(各进程采取互斥的方式,实现共享的资源称作临界资源。)多道程序系统中存在许多进程,它们共享各种资源,然而有很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如输入机、打印机、磁带机等。可以将信号量比喻成一个盒子,初始化时在盒子里放入N把钥匙,钥匙先到先得,当N把钥匙都被拿走完后,再来拿钥原创 2021-08-23 16:56:53 · 1128 阅读 · 0 评论 -
linux 多线程编程-(1)线程和进程的区别和优点
典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程和线程的区别进程:进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。...原创 2021-08-26 16:34:13 · 228 阅读 · 0 评论 -
linux 多线程编程-(2)线程的操作(3种)
头文件#include <pthread.h>线程的操作线程操作包括3 种线程的创建,退出,等待线程的创建函数原型int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);参数tidp:当pthread_create成功返回时,由tidp指向的内存单元被设置为新创建线程的线程I原创 2021-08-28 19:00:14 · 186 阅读 · 0 评论 -
linux 多线程编程-(3)互斥锁
互斥锁互斥量(mutex)是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个(需要竞争)变为可运行状态的线程可以对互斥量加锁,其他线程将会看到互斥锁依然被锁住,只能回去等待它重新变为可用。在这种方式下,每次只有一个线程可以向前运行。在设计时需要规定所有的线程必须遵守相同的数据访问规则。只有这样,互斥机制才能原创 2021-08-29 16:45:21 · 456 阅读 · 0 评论 -
linux 多线程编程-(4)条件变量
条件变量条件变量是线程另一可用的同步机制条件变量给多个线程提供了一个会合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生。条件本身是由互斥量保护的。线程在改变条件状态前必须首先锁住互斥量,其他线程在获得互斥量之前不会察觉到这种改变,因为必须锁定互斥量以后才能计算条件。条件变量使用之前必须首先初始化pthread_cond_t数据类型代表的条件变量可以用两种方式进行初始化:静态初始化:pthread_cond_t cond = PTHREAD_COND_INITIAL原创 2021-08-30 15:08:04 · 267 阅读 · 0 评论 -
linux 网络编程(1)初识网络编程
1、为什么需要学习网络编程?前面学习的进程间通信:管道、消息队列、共享内存、信号、信号量这5种通信方式都是依靠Liunx内核。他们的一个缺点就是,这些通信方式只能在单机运行。所以引入网络编程可以实现多机通讯网络的通讯 Linux与Android、IOS、各种单片机,或者是Android对Android等等。网络编程的主要的问题:网络通讯:通过通信双方地址。地址由IP地址和端口号组成。IP地址:负责定位主机。端口号:负责定位主机上的特定应用(主机上有着多种协议)。端口号作用一台拥有IP地址原创 2021-09-10 23:05:27 · 252 阅读 · 0 评论 -
linux 网络编程(2)socket网络编程
基础地址地址由IP地址、端口号构成IP地址:用于设备标识端口号:用于标识网络服务(ftp、http、socket) (5000到10000之间选择)IP地址转换API(IP地址是字符串要转换成网络能识别格式)#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>int inet_aton(const char *cp, struct in_addr *inp); //原创 2021-09-11 10:14:42 · 226 阅读 · 0 评论