小伟linux
文章平均质量分 70
独语天涯
C/C++ Linux
展开
-
不得不了解的操作系统
1、进程和线程的区别进程是操作系统对一个正在运行的程序的抽象。是系统进行资源分配的基本单位。一个系统上可以同时运行很多个进程,而每个进程都好像在独占的使用硬件,而并发运行是说一个进程的指令和另一个进程的指令交替执行。操作系统保持跟踪进程运行所需的所有状态信息。这种状态就叫上下文;线程是进程内部的一条执行路径,是系统进行调度的基本单位。在现代操作系统中,一个进程可以由多个被称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享代码和全局数据。2、孤儿进程和僵死进程僵死进程:子进程先于父进程运行结原创 2021-08-30 18:38:42 · 79 阅读 · 0 评论 -
应该熟知的网络基础
OSI七层模型自下而上:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层TCP/IP四层模型自下而上:网络接口曾、网际层、运输层、应用层五层协议物理层、数据链路层、网络层、运输层、应用层物理层、数据链路层MAC地址:在局域网中的硬件地址,IEEE802标准为局域网规定了一种48位的全球地址,值局域网上的每台计算机固化在适配器的ROM中的地址。以太网采用的是具有冲突检测的载波监听多点接入CSMA/CD。该协议要点是:发送前先监听,边发送边监听,一旦发现总线出现了碰撞,就立即停止发送。原创 2021-08-28 15:20:18 · 193 阅读 · 0 评论 -
Linux线程
线程概念:线程是进程内部的一条执行路径或执行序列。线程的量级很小,一切的进程都至少有一条线程,隶属于一个进程的多个线程指向同一块地址空间,但有自己的线程ID。进程和线程的区别进程是资源竞争的基本单位。 Linux下没有真正的线程,因为Linux下没有给线程设计专有的结构体,它的线程是由进程模拟的,是多个进程共享一块地址空间模拟而来。 创建线程的资源成本小,工作效率高。 Linux下CPU能够看见的所有线程都可以看成轻量级的进程。 进程是承担分配系统资源的基本实体,进程具有独立性,但进程间原创 2021-04-09 22:59:53 · 197 阅读 · 0 评论 -
Linux进程间通讯的方式
管道当一个进程连接数据流到另一个进程时,我们就会用到管道。我们通常把一个进程的输出连接到另一个进程的输入。管道的本质是内核提供的一段内存。popen()函数和pclose()函数popen()函数允许一个程序将另一个程序作为新进程来启动,返回一个文件流指针,第一个参数是程序名和对应的参数,另一个是“r”或“w”。pclose()函数关闭popen()函数对应的进程与之关联的文件流,成功返回文件流对应的退出码,失败返回-1,并设置errno。FILE* read;read = popen(原创 2021-04-09 14:59:56 · 100 阅读 · 0 评论 -
Linux信号
信号机制是一种使用信号来进行进程之间传递消息的方法,信号的全称为软中断信号,简称软中断。信号的本质是软件层次上对中断的一种模拟(软中断)。它是一种异步通信的处理机制,事实上,进程并不知道信号何时到来。通俗来讲,信号就是系统响应某些条件而产生的一个事件。信号的产生有以下几种方式:用户按下某些终端按键后引发终端产生信号,如“CTRL+C”。 硬件产生的异常信号,如无效的内存访问, 这些信号通常由硬件检测并通知Linux内核,然后内核产生信号发送给相关进程。 进程使用系统调用函数kill给一个进程原创 2021-04-07 22:39:17 · 92 阅读 · 0 评论 -
Linux文件操作
文件描述符每个运行中的程序被称为进程,它有一些与之关联的文件描述符,这些是一些小值整数,可以通过它们访问打开的文件或设备。当一个程序开始运行,它一般会有三个已打开的文件描述符:0:标准输入、1:标准输出、2:标准错误Linux下文件描述符的限制有两个方面:一是用户级限制,二是系统级限制,它们限制了进程能打开文件的数量。命令:sysctl -a | grep fs.file-max 可以查看当前的系统级限制能够打开的最大文件数。修改:通过 sysctl -w fs.file-max=文件数 命令修原创 2021-04-07 21:50:18 · 131 阅读 · 0 评论 -
Linux进程
fork复制进程fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的任务结构和PID,同时复制父进程的其他资源(用户空间、文件描述符)。实现方式:调用fork()函数,成功在子进程返回0,父进程返回子进程PID,失败返回0。共享代码段:fork后,父进程和子进程都会继续执行fork调用之后的指令,子进程是父进程的副本,获得父进程的数据空间、堆、栈、缓冲区的副本,这些都是副本,父子进程不共享这部分的内存,但是父子进程共享程序的正文段,正文存放CPU执行的机器指令,通常是原创 2021-04-06 22:32:00 · 63 阅读 · 0 评论 -
UDP协议&IP协议&HTTP协议
UDP协议:无连接,不可靠的数据报服务服务器编程:socket()、bind()(服务器地址信息与socket绑定)、recvfrom()(接收数据报)、sendto()(发送数据报)、close()客户端编程:socket()、sendto()、recvfrom()、close()1、一次sendto对应一次recvfrom。2、一次sendto对应一个UDP数据报。3、一次recvfrom只能处理一个UDP数据报,如果没有将一个数据报里的数据处理完,剩余的会被丢弃。如不及时接收会丢包。IP原创 2021-03-10 23:07:07 · 330 阅读 · 0 评论 -
TCP协议
TCP协议是一项面向连接的、可靠的、基于字节流的传输层通信协议。TCP/IP模型自上向下:应用层、传输层、网络层、数据链路层。数据链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。IP协议无连接、无状态、不可靠传输层:为两台主机上的应用程序提供端对端的通信。传输层协议:TCP协议、UDP协议、SCTP协议应用层:负责处理应用程序的逻辑。“hello”发送的过程:TCP服务端编程:socket()、bind()、listen()、accept()、recv原创 2021-03-10 22:09:35 · 187 阅读 · 0 评论 -
杂乱无章的Linux——进程和信号
进程每一个运行着的程序实例就叫做进程,每一个进程都会被分配一个唯一的数字叫做进程标识符或PID。操作系统通过进程表对进程进行管理。在命令行输入ps -ef就可以查看当前所有进程。运行一个新进程,即在一个程序中启动另一个程序,可以使用system库函数,运行以字符串参数传递给它的命令并等待该命令的完成。system("ps ax");相当于在命令行输入ps ax,但如果想让这个进程后台运行,可以把上述函数代码改成system("ps ax &");。system函数在每次运行时都需要启动一个原创 2021-02-25 17:23:27 · 119 阅读 · 0 评论 -
杂乱无章的Linux
时间与日期time函数:1970年1月1日至今的秒数。difftime函数:计算两个time_t值之间的秒数,并以double类型返回。gmtime函数:把底层函数分解为一个结构,localtime函数:当地时间,使用和gmtime一样。mktime函数:将已分解的tm结构在转换为原始的time_t值,失败返回-1。asctime函数和ctime函数:前者返回一个字符串,包含时间日期的信息的一个字符串,后者转化为更易读的本地时间。其他:临时文件:tmpnam函数:生成一个唯一的文件名,(基原创 2021-02-22 21:41:54 · 82 阅读 · 0 评论 -
杂乱无章的Linux——流
标准i/o库全部保存在《stdio.h》库中。fopen函数:主要用于文件和终端的输入输出,成功返回FILE*指针,失败返回NULL,如果需要对设备进行明确的控制,建议用open系统调用。fread函数:fwrite函数:从指定的数据缓冲区中取出数据记录,并把他们写到输出流中。fclose函数:关闭指定的文件流stream,是所有尚未写出的数据都写出。fflush函数:把文件流中所有未写出的数据全部写出。fclose函数隐含执行了一次flush操作。fseek函数原创 2021-02-20 08:30:06 · 312 阅读 · 1 评论 -
杂乱无章的Linux——文件
首先,我们要明确一个概念:Linux中,一切(几乎一切)都是文件。Write系统调用:把缓冲区buf的前nbytes个字符写入与文件描述符fildes关联的文件中,返回实际写入的字节数。read系统调用:从与文件描述符fildes相关联的文件里读入nbytes个字节的数据,并把它们放在数据区buf中,返回实际读入的字节数。Open系统调用:Close系统调用:终止文件描述符fildes与其对应文件的关联,成功返回0,出错返回-1。ioct1系统调用:提供了一个用于控制设备及其描述符行原创 2021-02-20 05:46:34 · 136 阅读 · 0 评论 -
杂乱无章的Linux——shell(二)
参数扩展:here文档:脚本程序调试:图形化:dialog工具原创 2021-02-18 18:07:31 · 77 阅读 · 0 评论 -
杂乱无章的Linux—shell(一)
Liunx复习(一)管道与重定向:1、重定向输出(入):$ 1s -1 > lsoutput. txt将ls的输入结果全部保存到 lsoutput. txt文件中,但要注意,如果已经存在这个文件,那么将会把原文件覆盖,如果不想覆盖掉,可以用$ 1s -1 >> lsoutput. txt将输出结果附在原文件后面。$ kill -HUP 1234 >killout .txt 2>killerr . txt将标准错误输出保存在killerr . txt文件,也可以用原创 2021-02-18 14:56:16 · 163 阅读 · 0 评论