Linux学习笔记
文章平均质量分 66
从零开始学习Linux
日学三万行
这个作者很懒,什么都没留下…
展开
-
2021.4.16学习笔记
TCP客户端的实现:1、用socket创建套接字文件,指定使用TCP协议。2、调用connect主动向服务器发起三次握手,进行连接int connet(int sockfd,const struct sockaddr*addr,socklen_t addrlen);功能:向服务器主动发起连接返回值:成功返回0;失败返回1;3、调用read(recv)和write(send)收发数据4、调用close或者shutdown关闭连接...原创 2021-04-16 17:46:18 · 61 阅读 · 0 评论 -
2021.4.15学习笔记
嵌入式学习笔记UDP协议协议的特点:UDP使用TCP协议与UDP协议对比C/S与B/S的优缺点C/S优点缺点B/S优点缺点:TCP服务实现过程创建套接字:socket函数bind()listen()accept()UDP协议UDP:用户数据报协议。是一种无连接的传输层协议,不会创建连接,所以是一种不可靠的协议。它的优点为速度快,缺点为会丢包、会出错。1、无连接不可靠2、局域网:UDP传送数据的最大长度=1518-18-20-8=1472bit广域网:UDP传送数据的最大长度=65535-IP(头2原创 2021-04-15 11:48:00 · 78 阅读 · 0 评论 -
2021.4.14学习笔记
这里写目录标题实现网络通信需要哪些支持通信设备通信协议什么是通信协议,作用?TCP/IP协议栈分层的好处实现网络通信需要哪些支持通信设备网卡:pc机自带交换机;路由器光纤,电缆,基站通信协议操作系统自带协议栈(Linux的特点:丰富的协议)裸机开发需要独立的协议栈简单的网络通信只需要学会使用系统API什么是通信协议,作用?通信双方确定一种数据格式,以及通过什么格式来发送TCP/IP协议栈OSI七层网络模型,Linux四层网络模型;物理层:通信介质的信号到数字信号(二进制0100转载 2021-04-15 08:33:49 · 235 阅读 · 0 评论 -
2021.4.14学习笔记
嵌入式学习笔记多线程存在的问题:链表(线程池)多线程存在的问题:进程所支持的线程数量问题(受限)线程的创建和销毁的开销问题链表(线程池)1、任务队列是不是空2、任务队列为满3、任务队列不为空任务队列为空时,线程池里的线程阻塞等待任务队列为满时,不能添加新的任务任务队列不为空时,线程池里的线程处理任务int thread_num; //已开启的线程数量struct job *head; //任务队列的头指针struct job *tail; //任务队列的尾指针int原创 2021-04-12 17:44:31 · 81 阅读 · 0 评论 -
2021.4.09学习笔记
嵌入式学习笔记线程等待的目的:线程的状态可结合态可分离态线程分离函数功能返回值参数进程与线程的区别线程等待的目的:保证线程的退出顺序:保证一个线程退出并且回收资源后允许下一个进程退出回收线程退出时的资源情况:保证当前线程推出后,创建的新线程不会复用刚才退出线程的地址空间获得新线程退出时的结果是否时正确退出返回值线程的状态可结合态这种状态下的线程是能被其他进程回收资源或被杀死的可分离态不能被其他进程回收资源或被杀死的,它存储的资源在它终止时由系统自动回收默认情况下,线程是可结合态线程分离原创 2021-04-09 11:41:36 · 97 阅读 · 0 评论 -
2021.04.08学习笔记
嵌入式学习笔记线程的主动退出格式功能返回值参数线程的主动退出格式pthread_exit#include <pthread.h>void pthread_exit(void *retval);功能线程调用这个函数时,可以主动退出(终止)它和exit()很像,exit()是终止整个程序,而pthread_exit是终止次线程如果你在次线程里面调用错误,调用的是exit,整个线程就终止了返回值成功返回0,失败返回非零值参数retval:线程结束的返回值如果返回值很多时,就原创 2021-04-08 11:46:17 · 71 阅读 · 0 评论 -
2021.4.02学习笔记
嵌入式学习笔记进程间的通信方式消息队列消息队列的特点线程什么是线程为什么要学习线程线程由哪些组成线程的特点创建线程进程间的通信方式消息队列消息队列的特点(1)传送的是有格式的消息流(2)多进程网状交叉通信,实现大规模数据通信(3)使用内核中的链表(实现机制)posix的消息队列和系统V消息队列区别线程什么是线程线程是进程的一个实体,它是程序运行的最小单位为什么要学习线程1、线程是进程的一个实体,它是程序运行的最小单位,它比进程要消耗更少的资源2、能共享地址空间(进程)(堆栈:程序栈原创 2021-04-02 17:44:40 · 70 阅读 · 0 评论 -
2021.04.01学习笔记
ctrl+z//暂停信号int kill(pid_t pid, int sig);信号处理sighandler_t signal(int signum, sighandler_t handler);*************************信号的编号 信号的处理机制SIG_IGN:忽略信号SIG_DFL:信号的直接处理管道的优点总结:1.传输数据量少,因此只适合小数据量的传输2.管道数据被读出的时候会自动删除3.管道数据时什么格式输出共享内存无格式:当数据量大且读写效率要原创 2021-04-01 11:44:21 · 68 阅读 · 0 评论 -
2021.3.31学习笔记
嵌入式系统学习笔记进程间的通信方式(一)管道同一tab里的互相通信不同tab里的互相通信进程间的通信方式(一)管道同一tab里的互相通信#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <stdlib.h>#include <sys/wait.h>#include <sys/stat.h&原创 2021-04-01 09:26:06 · 75 阅读 · 0 评论 -
2021.3.30学习笔记
嵌入式学习笔记Linux学习pipe无名管道补充有名管道Linux学习pipe无名管道补充必须在系统调用fork()前调用pipe(),否则子进程将不会继承文件描述符(1)如果管道的写端不存在,则认为已经读到数据末尾,该函数返回的读出字节数为0(2)如管道写端存在时,如果请求的字节数目大于PIPE_BUF,则返回现有的管道数据字节数;如果不大于,则返回管道现有数据字节数,或请求字节数有名管道mkfifo()int mkfifo(const char *pathname, mode_t mod原创 2021-03-30 11:44:58 · 70 阅读 · 0 评论 -
2021.03.29学习笔记
嵌入式学习笔记多进程多线程二级目录三级目录多进程多线程多进程优点对用户来说操作系统更加健壮,(一个应用程熙无法破坏另一个进程或操作系统的运行)对于开发者来说,更容易进行内存的读取和写入多进程缺点多任务实现开销大编写能够与其他进程通信或者能够对其他进程操作的应用程序,将要困难的多wait函数族1、wait函数:将当前进程挂起,等待信号来临,再继续运行用来等待子进程的结束二级目录三级目录...原创 2021-03-29 17:42:57 · 63 阅读 · 0 评论 -
2021.3.26学习笔记
进程控制1、什么是进程:进程是可并发执行的程序,是一个在数据集合上的运行过程(或:当一个程序开始执行后,在开始执行到执行结束的这段时间里,它内存中的部分被称为进程)通俗讲:程序:在硬盘上的可执行文件进程:在执行中的程序2、什么是并发多进程同时运行,多个任务同时执行3、虚拟内存Linux虚拟内存管理技术:4、物理内存:实现在处理器中的内存模块 几百M将硬盘中的一部分存储单元拿来当内存使用 4g(受操作系统的寻址范围影响)0x00000000 -0xffffffff操作系统:内核原创 2021-03-26 11:40:46 · 78 阅读 · 0 评论 -
2021.3.25学习笔记
嵌入式学习笔记(接上篇)6、写字符的家族:fputc:将某一字符写入文件流int fputc(int c ,FILE *stream);putc:宏Putchar (c )7、printf家族 和scanf家族1、printf2、fprintf:int fprintf(FILE *stream,const char *format,…);Stdoutsprintf():往字符串里写字符串fscanf():从文件流里写读字符串int fcanf(FILE *stream,co原创 2021-03-25 21:34:48 · 79 阅读 · 0 评论 -
2021.3.24学习笔记
文件夹命令lseek:用来调整光标的位置lseek(文件描述符,光标移动的位置数,光标移动的形式)SEEK_SEEK_CUR:SET:将光标移动到文件开头在增加相应的offset位置SEEK_CUR:将光标移动到文件的当前位置再往后加offset的位置SEEK_END:将光标移动到文件的末尾再增加offset的位置lseek函数返回值:返回值是从文件开头到光标位置有多少个字符6、ftruncate:将指定的文件大小修改成length指定的大小(用来给文件扩容,如果指定的大小小于当前文件原创 2021-03-24 09:40:56 · 93 阅读 · 0 评论 -
2021.03.23学习笔记
**一、文件编程**Linux文件1、文件本身包含数据(打开文件可以看到数据信息)2、文件属性:ls -l查看属性(元数据:文件按的访问权限,文件的大小,创建日期等)目录也是文件(当创建一个新的目录的时候,系统自动创建两个文件项(.)(…)). :当前目录… :上一级目录根目录下个文件作用dev 设备文件lib 库文件boot 启动文件root 超级用户root的主目录sys 内核信息proc 进程文件系统proc的根目录var 日志文件media 文件系统的挂原创 2021-03-23 11:23:30 · 76 阅读 · 0 评论 -
2021.3.22学习笔记
expr命令格式:expr expression(命令读入expression参数,计算它的值,然后将结果写入标准输出参数应用规则:1、用空格隔开每个项;2、用\(反斜杠)放在shell特定的字符前面对包含空格和其他特殊字符串要用引号括起来。3、计算字符串长度4、增量计数说明:expr在循环中用于增量计算。先将变量初始化为0,然后循环值加1,反引号的用法时命令替代。··while循环语句while<判别令>do<命令清单 >done当<判别令>返原创 2021-03-22 11:40:39 · 81 阅读 · 0 评论 -
2021.3.19学习笔记
4、变量表达式test是shell程序中的一个表达式,通常用在流程控制for,while,until,if等结构中,用test命令去判断文件的存在与性质,变量的相互关系语法:test<表达式>如果<表达式>成立,test返回0,反之返回一个非0值字符串比较两个数值的比较逻辑操作,可以进行and/or,与其他条件联合使用文件操作,例如文件是否存在文件的状态等字符串比较-z<字符串>比较字符串的长度是否为0,如果等于0则为是返回0-n<字符串&原创 2021-03-19 11:41:42 · 88 阅读 · 0 评论 -
2021.3.18学习笔记
显示本地变量echo $变量名 或echo $(变量名)eg: #num=2#echo“this is $numnd”#num=2#echo “this is ${num}nd”eg2要将name的内容多出“yes”,两种方法#name="$name"yes#name=${name}yeseg3:在子shell下变量的作用范围#aa=11#bash (bash开启一个子shell)#echo $aa (输出aa,输出不了,子shell里没有)#aa=22#e原创 2021-03-18 10:46:33 · 120 阅读 · 0 评论 -
2021.3.17学习笔记
标准输入的文件描述符为0标准输出的文件描述符为1标准错误的文件描述符为2">"重定向符号command > file 把命令的输出结果重定向到新的文件夹里shell就是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序界面系统级程序目前流行的几种shell:ash、bash、ksh、csh、zsh等#echo$SHELL : 这个命令用来查shell类型Linux里用的shell类型是bash管道pipecommmand1 | command2 [原创 2021-03-17 17:34:53 · 97 阅读 · 0 评论 -
2021.3.15学习笔记
企业级Makefile编写1.总控makefile:进入各个功能子目录执行make命令,并将所有.o文件生成可执行文件2、功能目录makefile:将功能目录下的所有.c文件编译成.o文件3、脚本目录makefile:定义其他makefile文件所用到的变量阅读makefile顺序;3 - 1 - 21、$(wildcard 模式参数)列:result :=$(wildcard *.c )列出当前目录下所有.c文件2、$(patsubst 模式参数,参数1,参数2)列:result原创 2021-03-15 17:49:30 · 81 阅读 · 0 评论 -
2021.3.12学习笔记
嵌入式系统开发学习笔记嵌入式Linux开发工具–调试器gdb1、gdb也是GUN计划(a/启动运行程序 b/设置断点 c/查看变量值)2、使用gdb之前,使用-g编译选项3、学习gdb命令:gdb可执行文件–tui4、运行命令:run(r) continue(c)5、设置断点:break +行号 break+函数名 break+行号+条件6、查看断点信息:info break7、删除断点:delete+断点号8、单步执行:next step9、查看变量值:print 变量名原创 2021-03-12 11:45:25 · 102 阅读 · 0 评论 -
2021.3.11学习笔记
嵌入式系统开发学习笔记linux操作补充1、gcc -Wall 1.c 查看代码所有警告2、cp …/add.h 把上一级的add.h复制到这一级库文件库文件:存放函数和变量的仓库,特点:只能使用库里的函数和变量,不能看到其实现静态库(以.a结尾):当使用静态库时,库里的函数和变量只在编译时加载到可执行文件动态库(以.so结尾):当使用动态库时,库里的函数和变量只在运行时加载到可执行文件可执行文件的大小:静态库>动态库---->静态库的内存的使用效率不高可执行文件的速度:原创 2021-03-11 11:41:07 · 137 阅读 · 1 评论 -
2020.3.10学习笔记
嵌入式系统开发学习笔记linux操作补充1、ctrl+shift+c 复制2、ifconfig 查看ip地址3、vim+文件名 编辑文件4、ping 检测虚拟机运行连接是否通畅vim文件编辑简单操作三种模式1、命令模式 进入vim默认进入 插入模式下esc进入命令模式2、底行模式 命令模式下暑促shift+:进入3、插入模式 命令模式下输入a/i进入插入模式三种退出方式1、shift+z+z 保存并退出2、shift+: 进入底行模式 输入q退出 输入wq保存并退原创 2021-03-10 17:43:19 · 72 阅读 · 0 评论 -
2021.3.9学习笔记
嵌入式系统开发学习笔记Linux操作一、操作命令1、cd / 进入根目录2、cd .进入当前目录3、cd …进入上一级目录4、cd 文件夹名 进入文件夹5、cd b 双击TAb 查看b开头的子目录6、clear 清屏7、su root 切换root权限用户8、su 用户名(jsetc)切换普通用户9、touch 文件名 创建文件10、ls 查看11、man ls 开发者手册12、adduser 添加用户13、sudo 借助管理员身份14.userdel 删除用户15、mk原创 2021-03-09 11:43:07 · 188 阅读 · 0 评论