linux
二二牧人
嵌入式软件工程师
展开
-
linux——select、poll、epoll
文章目录1.多路I/O转接服务器2.select1.多路I/O转接服务器多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。2.select#include <sys/select.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select(int nfds, fd_se原创 2021-08-23 17:23:58 · 127 阅读 · 0 评论 -
linux——线程通信(2)
文章目录1.条件变量1.1 条件变量函数:1.2 pthread_cond_init 函数1.3 pthread_cond_destroy 函数1.4 pthread_cond_wait 函数1.5 pthread_cond_timedwait 函数1.6 pthread_cond_signal 函数1.7 pthread_cond_broadcast 函数1.条件变量条件变量本身不是锁!但它也可以造成线程阻塞。通常与互斥锁配合使用。给多线程提供一个会合的场所。1.1 条件变量函数:pthread原创 2021-07-08 15:04:49 · 285 阅读 · 0 评论 -
linux——线程通信(1)
文章目录1.同步概念2.线程同步3.数据混乱原因:4.互斥量 mutex5.主要应用函数:5.1 pthread_mutex_init 函数5.2 pthread_mutex_destroy 函数5.3 pthread_mutex_lock 函数5.4 pthread_mutex_unlock 函数5.5 pthread_mutex_trylock 函数5.6 加锁与解锁5.7 lock 与 trylock:1.同步概念所谓同步,即同时起步,协调一致。不同的对象,对“同步”的理解方式略有不同。如,设备原创 2021-07-07 10:53:43 · 171 阅读 · 0 评论 -
linux——线程(2)
文章目录1.pthread_join 函数2.pthread_detach 函数3.pthread_cancel 函数4.终止线程方式5.控制原语对比6.线程属性7.线程属性初始化8.线程的分离状态9.线程使用注意事项1.pthread_join 函数阻塞等待线程退出,获取线程退出状态 其作用,对应进程中 waitpid() 函数。int pthread_join(pthread_t thread, void **retval); 成功:0;失败:错误号参数:thread:线程 ID (【注原创 2021-07-06 11:26:48 · 145 阅读 · 1 评论 -
linux——线程(1)
文章目录1.线程概念1.1 什么是线程1.2 线程和进程区别1.3 线程实现原理1.4 三级映射1.5 线程共享资源1.6 线程非共享资源1.7 线程优、缺点2.线程控制原语2.1 pthread_self 函数2.2 pthread_create 函数3.线程与共享3.1 线程共享全局变量4.线程退出4.1 pthread_exit 函数1.线程概念1.1 什么是线程线程:LWP(light weight process), 轻量级的进程,本质仍是进程(在 Linux 环境下)。线程是进程的子任务原创 2021-07-06 10:21:16 · 114 阅读 · 0 评论 -
linux文件IO——目录操作和文件属性
文章目录1.opendir函数2.readdir函数3.closedir函数4.打印指定目录下的所有文件名称5.chmod函数和fchmod函数6.获取文件的属性1.opendir函数2.readdir函数3.closedir函数4.打印指定目录下的所有文件名称#include<stdio.h>#include <sys/types.h>#include <dirent.h>int main(int argc,char *argv[]){原创 2021-04-09 15:36:36 · 138 阅读 · 0 评论 -
linux文件IO——编程接口
文章目录1.read函数2.使用read函数计算文本文件中字符总数3.write函数4.复制文本文件5.指定文件名的方式复制文件6.lseek函数1.read函数2.使用read函数计算文本文件中字符总数#include<stdio.h>#include<stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd原创 2021-04-09 15:05:49 · 104 阅读 · 0 评论 -
linux文件IO——文件IO介绍
文章目录1.文件IO和标准IO区别2.什么是文件IO1.文件IO和标准IO区别\qquad标准IO遵从ANSIC,文件IO遵从POSIX;\qquad标准IO有缓冲机制,文件IO没有;\qquad标准IO通过流FILE来操作,文件IO通过文件描述符;2.什么是文件IO...原创 2021-04-09 11:21:54 · 82 阅读 · 0 评论 -
linux标准I/O——格式化输出
文章目录1.格式化输出函数2.输出日期到文本文档和数组中3.练习3.1 题目3.2 提示3.3 实现1.格式化输出函数2.输出日期到文本文档和数组中#include<stdio.h>int main(){ int year=2021,month=4,date=8; FILE *fd; char buf[64]; fd=fopen("data.txt","a+"); fprintf(fd,"%d-%d-原创 2021-04-08 20:07:25 · 100 阅读 · 0 评论 -
linux标准I/O——流的相关操作
文章目录1.刷新流2.不断将键盘内容写入g.txt文件中3.定位流4.定位流的实例1.刷新流2.不断将键盘内容写入g.txt文件中#include<stdio.h>#define N 1024int main(){ FILE *fd; char buf[N]; fd=fopen("./g.txt","a+"); while(1){ fgets(buf,N,stdin);原创 2021-04-08 15:36:06 · 75 阅读 · 0 评论 -
linux标准I/O——按对象输入和输出
文章目录1.按对象操作函数1.按对象操作函数原创 2021-04-08 14:55:42 · 73 阅读 · 0 评论 -
linux标准I/O——按行输入和输出
文章目录1.按行输入函数2.从键盘读入,并打印3.按行输出4.键盘输入字符串,写入文本1.按行输入函数2.从键盘读入,并打印#include<stdio.h>#include<string.h>#define N 1024int main(){ char buf[N]; while(1){ fgets(buf,N,stdin); printf("%s",buf);原创 2021-04-08 14:36:18 · 202 阅读 · 0 评论 -
linux标准I/O——按字符输入和输出
文章目录1.流的读写方式2.按字符输入3.举例3.1 从键盘读取一个字符,并打印到终端上3.2 读取一个文件,并打印文件中的字符数目3.3 自行输入要查看的文件,并打印文件中的字符数目4.按字符输出5.举例5.1 从键盘读入,并打印到终端5.2 从键盘读入,不覆盖写入a.txt中5.3 复制一个文件到另外一个文件中1.流的读写方式2.按字符输入3.举例3.1 从键盘读取一个字符,并打印到终端上#include<stdio.h>int main(){ char原创 2021-04-08 14:05:36 · 271 阅读 · 1 评论 -
linux标准I/O——流的打开和关闭
文章目录1.打开流2.mode参数3.fopen举例4.新建文件权限5.处理错误信息6.关闭流1.打开流2.mode参数3.fopen举例#include<stdio.h>int main(){ FILE *fp; fp=fopen("a.txt","r+"); if(fp==NULL){ printf("fopen error\n"); return -1;原创 2021-04-08 11:12:29 · 215 阅读 · 0 评论 -
linux标准I/O——标准I/O介绍
文章目录1.文件的相关概念1.1 什么是文件1.2 文件类型2.标准I/O概念2.1 什么是标准I/O2.2 FILE和流2.3 流的缓冲类型2.4 stdin,stdout和stderr1.文件的相关概念1.1 什么是文件\qquad一组相关数据的有序集合1.2 文件类型文件类型表示举例常规文件r文本文件、二进制文件目录文件d文件夹字符设备文件c块设备文件b管道文件p套接字文件s符号链接文件l\原创 2021-04-07 20:29:16 · 291 阅读 · 0 评论 -
linux的基础知识——正则表达式
1.正则表达式2.基本语法原创 2021-03-05 20:58:01 · 71 阅读 · 0 评论 -
linux的基础知识——shell语法
1.shell脚本语法1.1 条件测试原创 2021-03-05 20:00:22 · 139 阅读 · 0 评论 -
linux的基础知识——shell基础
1.什么是shell?2.shell历史3.编写一个shell脚本3.1创建一个.sh文件vim sample.sh3.2 编写一个简单的脚本内容#!/bin/sh#This is to show what a example looks likeecho "Our first example."echo #this inserts an empty line in output.echo ""/bin/pwdechoecho "This diractory c原创 2021-03-05 10:25:37 · 89 阅读 · 1 评论 -
linux的基础知识——本地套接字
1.本地套接字原创 2021-03-04 21:26:31 · 104 阅读 · 1 评论 -
linux的基础知识——UDP
1.UDP服务器2.UDP处理模型原创 2021-03-04 21:10:44 · 106 阅读 · 1 评论 -
linux的基础知识——TCP异常断开
1.TCP异常断开1.1 心跳检测机制1.2 设置TCP属性原创 2021-03-04 17:10:20 · 257 阅读 · 1 评论 -
linux的基础知识——TCP通信状态
1.半关闭shutdown原创 2021-03-04 16:28:57 · 75 阅读 · 0 评论 -
linux的基础知识——多进程并发服务器
1.原创 2021-03-02 20:23:27 · 86 阅读 · 0 评论 -
linux的基础知识——TCP握手
1.TCP为什么需要三次握手?\qquad因为IP处于网络层,不稳定,与硬件联系紧密。传输层是对网路层的不稳定性做完全不弥补——UDP——无连接的不可靠报文传输;对网络层做完全弥补——TCP——面向连接的可靠数据包传递。TCP连接断开包含三次握手和四次握手。\qquadTCP的三次握手用来确定客户端服务器之间的通路是否畅通。2.TCP握手过程...原创 2021-02-28 17:30:37 · 102 阅读 · 0 评论 -
linux网络编程——客户端编程
\qquad一个简单的客户端/服务端通信程序。\qquad服务端:将客户端上传的字符串,改为大写字符串,并且显示客户端的IP和端口号。#include<stdio.h>#include<unistd.h>#include<sys/socket.h>#include<stdlib.h>#include<ctype.h>#include<arpa/inet.h>#define SERV_PORT 6666int main原创 2021-02-28 15:31:36 · 178 阅读 · 0 评论 -
linux的基础知识——线程
文章目录1.什么是线程?2.linux内核线程实现原理3.线程共享资源4.线程的非共享资源1.什么是线程?2.linux内核线程实现原理3.线程共享资源4.线程的非共享资源原创 2020-12-30 17:39:47 · 150 阅读 · 0 评论 -
linux的基础知识——守护进程
文章目录1.守护进程1.守护进程原创 2020-12-30 11:31:41 · 87 阅读 · 0 评论 -
linux的基础知识——会话
文章目录1.会话2.getsid函数3.setsid函数1.会话\qquad进程组是进程的集合,而会话是进程组的集合。2.getsid函数3.setsid函数原创 2020-12-29 17:37:38 · 183 阅读 · 0 评论 -
linux的基础知识——进程组
文章目录1.进程组的概念2.进程组操作函数1.进程组的概念2.进程组操作函数原创 2020-12-29 17:25:42 · 134 阅读 · 0 评论 -
linux的基础知识——终端
文章目录1.终端2.终端的启动流程3.线路规程4.ttyname函数5.网络终端1.终端2.终端的启动流程3.线路规程4.ttyname函数5.网络终端原创 2020-12-29 17:10:17 · 75 阅读 · 0 评论 -
linux的基础知识——捕捉SIGCHLD、信号传参,中断系统调用
文章目录1.SIGCHLD信号2.信号传参3.捕捉信号传参4.中断系统调用1.SIGCHLD信号2.信号传参3.捕捉信号传参4.中断系统调用原创 2020-12-29 16:00:51 · 118 阅读 · 0 评论 -
linux的基础知识——全局变量异步I/O
文章目录1.父子进程间的通信举例1.父子进程间的通信举例#include<stdio.h>#include<signal.h>#include<unistd.h>#include<stdlib.h>int n=0,flag=0;void sys_err(char *str){ perror(str); exit(1);}void do_sig_child(int num){ print原创 2020-12-29 15:10:28 · 88 阅读 · 0 评论 -
linux的基础知识——时序竞态
文章目录1.pause函数1.1 pause函数例子2.3.1.pause函数1.1 pause函数例子\qquad程序依次从1到无穷输出数字,当遇到100的整数倍时就暂停,键盘输入ctrl+c,就继续输出。#include<stdio.h>#include<signal.h>#include<unistd.h>void docatch(int signo){ printf("信号已被捕捉\n");}int main(){ int i;原创 2020-12-29 11:16:12 · 109 阅读 · 0 评论 -
linux的基础知识——signal信号捕捉,信号集操作函数
1.signal捕捉信号#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);\qquadsignal(SIGALRM,myfunc)函数会捕捉SIGALRM信号,捕捉之后会执行myfunc函数,而不会终止当前进程。#include<stdio.h>#include<sys/time.h>#incl原创 2020-12-28 20:51:21 · 602 阅读 · 0 评论 -
linux的基础知识——CS模型流程图
1.典型的CS模型流程图2.服务端需要做的事情(1)socket():建立服务端套接字;(2)bind():绑定IP和端口号,初始化struct sockaddr_in addr;(3)listen():指定最大同时发起连接数;(4)accept():阻塞等待客户端发起连接;(5)read():读取客户端数据;(6)对已读取的数据进行处理;(7)write():写回客户端;(8)close()3.客户端需要做的事情(1)socket():建立客户端套接字;(2)bind():当进行原创 2020-12-21 09:18:27 · 966 阅读 · 2 评论 -
linux的基础知识——网络套接字函数
1.socket函数 #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int socket(int domain, int type, int protocol);功能:创建套接字参数:domain:AF_INET,AF_INET6, AF_UNIX;type:SOCK_STREAM ,SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW ,SOCK_RDM原创 2020-12-17 21:07:10 · 164 阅读 · 0 评论 -
linux的基础知识——网络字节序转化,ip地址转换函数,sockaddr数据结构
1.原创 2020-12-17 20:16:09 · 447 阅读 · 0 评论 -
linux的基础知识——IP,UDP和TCP
1.IP协议IP协议处于网络层,格式如下:2.UDPUDP协议处于传输层,传输层常用的协议有两种,一个就是UDP,另外一个就是TCP。原创 2020-12-16 21:34:58 · 97 阅读 · 0 评论 -
linux的基础知识——以太网帧格式
1.路由器寻路路由器根据自身的路由表,寻找下一个路由节点。2.原创 2020-12-16 21:10:16 · 679 阅读 · 0 评论 -
linux的基础知识——模型结构和数据包的封装
1.OSI参考模型和TCP/IP参考模型2.TCP/IP模型TCP/IP网络协议分为四层:应用层,传输层,网络层,链路层3.数据包的封装数据要想传输必须经过封装。两台电脑通过TCP/IP协议通讯过程如下:原创 2020-12-15 11:26:14 · 156 阅读 · 0 评论