
Linux
文章平均质量分 54
Linux文件、进程、线程、网络编程
骑车男孩
这个作者很懒,什么都没留下…
展开
-
linux网络编程:select()函数
简单解释:在网络编程中,函数connect(),accept(),read(),recv(),或recvfrom()这样的程序会阻塞(进程或线程执行到这些函数时候必须要等待某件事情的发生,如果没有发生,进程或线程就被阻塞,这些函数就不能立即返回),在使用select()函数就可以不阻塞(进程或线程执行select()函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况。如果事件发生则与阻塞方式相同,如果事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行)。se原创 2021-07-09 22:02:27 · 349 阅读 · 0 评论 -
struct sched_param结构体的运用以及线程属性简单记录
一、struct sched_param结构体#include <sched.h>#define sched_ss_low_priority __ss_un.__ss.__ss_low_priority#define sched_ss_max_repl __ss_un.__ss.__ss_max_repl#define sched_ss_repl_period __ss_un.__ss.__ss_repl_period#define sched_ss_init_b原创 2021-06-30 01:03:17 · 3484 阅读 · 2 评论 -
判断计算机处理器的大小端
方式一(通过指针地址)#include<stdio.h>//int占四个字节,char占一个字节int i=1; //存放,存放在低地址(小端),存放在高地址(大端)char *p=(char *)&i; //截断,存i的一个字节的低地址,然后判断低地址的内容if(*p == 1) printf("小端模式"); else // (*p == 0) printf("大端模式");方式一(通过指针地址)//Short占两个字节,char占原创 2021-05-04 18:34:33 · 417 阅读 · 0 评论 -
linux 线程生产者和消费者(C语言)示例笔记
#include<stdio.h>#include<pthread.h>pthread_mutex_t mutex; //一个锁pthread_cond_t condc,condp; //两个条件变量int buffer = 0;void* consumer() //消费者{ int i; for(i = 1; i<=20 ; i++) { pthrea原创 2021-04-08 23:29:19 · 180 阅读 · 0 评论 -
学习Makefile规则与示例一
程序的编译过程4个步骤:预处理,编译,汇编,链接.预处理: 检测语法错误,把头文件包含进来,宏展开.编译:把. c文件转换成汇编文件.s汇编:把. s文件转换成二进制文件.o链接:. .o文件+库文件 =可执行程序gcc -v -o hello hello.c 就可观看到编译的细节.gcc -c -o a.o a.c //-c 把预处理,编译,汇编 做完 链接不做.1.Makefile的作用:高效地编译程序,在修改源文件或者头文件,只需要重新编译牵涉到的文件,就可以原创 2021-03-08 16:31:49 · 167 阅读 · 0 评论 -
linux的简单系统命令
1)data功能:显示日期和时间2)cal功能:显示日历3)users功能:显示当前登录系统的所以用户名字4)who功能:显示已登录到系统的用户的详细信息5)whomi功能:显示当前有效的用户名6)uname -a功能:打印系统信息7)free -h功能:显示内存使用情况8)ps -aux功能:显示当前进程信息快照(通常配合grep使用)各项含义9)top功能:动态的显示系统进程信息各项含义10)kill功能:发送信号给进程11)reboot功能:原创 2021-03-02 23:21:02 · 107 阅读 · 0 评论 -
Makefile的运用与示例二
通用Makefile的使用说明通用的Makefile,它可以用来编译应用程序:(1)支持多个目录,多层目录,多个文件;(2)支持给所给文件设置编译选项;(3)支持给某个目录设置编译选项;(4)支持给某个文件单独设置编译选项;(5)简单、好用。本程序的Makefile分为3类:1.顶层目录的Makefile2.顶层目录的Makefile.build3.各级子目录的Makefile一、各级子目录的Makefile:它最简单的形式如下:EXTRA_CFLAGS :=CFLAG原创 2021-02-06 15:25:21 · 171 阅读 · 0 评论 -
linux消息队列,共享内存,信号量综合运用
关于对消息队列,共享内存,信号量的具体介绍https://blog.youkuaiyun.com/qq_46777053/article/details/108804717mySemSercer.c#include<stdio.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <sys/shm.h>#include<stdlib.h>#原创 2021-01-26 13:28:17 · 132 阅读 · 0 评论 -
linux常用命令
常用命令ifconfig -a或ifconfig查看ipcd /home/用户名/Deskto切换到桌面文件/文件夹管理ls 列出当前目录文件(不包括隐含文件)ls -a 列出当前目录文件(包括隐含文件)ls -l 列出当前目录下文件的详细信息cd ./ 回当前目录的上一级目录cd - 回上一次所在的目录cd ~ 或 cd / 回当前用户的宿主目录mkdir 目录名 创建一个目录tuoch 文本名 创建一个文本rmdir 空目录名 删除一个空目录rm 文件名 文件名 删除一个文件或原创 2021-01-25 12:00:04 · 100 阅读 · 0 评论 -
Linux内核结构
VFS 在系统调用接口中Linux shellshell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是个命令解释器。原创 2021-01-22 14:43:19 · 72 阅读 · 0 评论 -
关于对vfs的简单理解
1.什么是虚拟文件系统Virtual File System ?vfs就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用的接口,任何要使用文件系统的程序都必须经由这层接口来使用它。2.虚拟文件系统有什么作用?简化应用程序员的开发,不管是什么文件类型,不管文件是磁盘还是设备,都只用open read write统一操作。...原创 2021-01-22 13:59:10 · 1794 阅读 · 0 评论 -
Linux文件系统的目录及认知
1.什么是文件系统?常规认知: 根目录文件系统是操作系统用于明确存储设备组织文件的方法。以上说的方法:就是文件管理系统(程序),简称文件系统。2.文件系统的种类有哪些?FAT VFAT NTFS EXT1/2/3/4 HFS …树莓派查看文件系统的命令: df -Tvfat : boot(bootloader, kernel)ext4 : 根目录tmpfs : 内存文件系统3.什么是分区?windows: 目录即分区C盘(装系统的位置)也可以随意在C盘存放文件. D盘(原创 2021-01-22 11:58:31 · 122 阅读 · 0 评论 -
Linux内核源代码目录树结构
可运用一个小工具tree查看linux内核源码目录树安装sudo apt-get install tree在根目录下执行tree即可查看Linux内核源代码每个文件的作用arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。block:部分原创 2021-01-21 19:16:29 · 215 阅读 · 0 评论 -
socket,TCP,http三者之间的关系学习笔记
1.http协议的介绍HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。(1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。(2)在HTTP 1.1中则可以在一次连接中处理多原创 2021-01-14 15:55:51 · 224 阅读 · 0 评论 -
TCP/IP协议与TCP协议的学习笔记
TCP/IP协议是用于计算机通信的一组协议,我们通常称它为TCP/IP协议族。它是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的INTERNET是目前国际上规模最大的计算机网络,正因为INTERNET的广泛使用,使得TCP/IP成了事实上的标准。两者的区别:TCP/IP协议看上去好像是TCP协议和IP协议,但其实并不一样TCP/IP协议叫做网络通信协议,它包括上百个协议,而HTTP协议、TCP协议、IP协议只是TCP/IP协议中的一部分.下面的图表试图显原创 2021-01-14 14:29:14 · 839 阅读 · 0 评论 -
关于向线程的运行函数传递一个参数和多个参数
1.线程创建#include <pthread.h>int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);// 返回:若成功返回0,否则返回错误编号参数说明:第一个参数为指向线程标识符的指针。 第二个参数用来设置线程属性。 第三个参数是线程运行函数的起始地址。 最后一个原创 2020-12-17 16:05:30 · 3051 阅读 · 0 评论 -
Linux网络编程相关操作
一、Linux网络编程基础知识TCP/UDP对比1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2.TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序达;UDP尽最大努力交付,即不保证可靠交付3.TCP面向字节流,实际上是TCP把数据看成一串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)4.每一条TCP连接只能是点到点的;UDP原创 2020-10-11 11:18:18 · 243 阅读 · 0 评论 -
Linux线程相关操作
Linux线程的简单介绍进程是程序执行时的一哥实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换原创 2020-10-09 12:28:30 · 207 阅读 · 0 评论 -
Linux IPC
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点:它是半双工的(即数据只能在一个方向上流动),具有固定读端和写端。它只能用于具有亲缘关系的进程之间的通信(原创 2020-09-29 20:33:45 · 273 阅读 · 0 评论 -
system函数和popen函数
Linux的system函数的实现源码system()会调用fork()产生子进程,由子进程来调用/bin/sh-c cmdstring来执行参数cmdstring字符串所代表的命令,此命令执行完后随即返回原调用的进程。int system(const char * cmdstring){ pid_t pid; int status; if(cmdstring == NULL){ return (1); } if((原创 2020-09-23 22:15:25 · 353 阅读 · 0 评论 -
exec配合fork使用
实现功能,当父进程检测到输入为1的时候,创建子进程把配置文件的字段值修改调。config.txt的内容SOEED=3LENG=9SCORE=9LEVEL=5没有运用exec族函数#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdio.h>#include<unistd.h>#include<string.h>#inclu原创 2020-09-22 17:18:23 · 181 阅读 · 0 评论 -
linux进程如何配置环境变量及exec族函数
查看环境变量输入echo $PATH 方可查看添加环境变量输入export PATH=$PATH:XXXX具体步骤关于exec族函数借鉴此篇文章linux进程—exec族函数(execl, execlp, execle, execv, execvp, execvpe)原创 2020-09-22 17:17:49 · 736 阅读 · 0 评论 -
fork编程实战
前言 #include <unistd.h> pid_t fork(void);由fork创建的新进程被称为子进程。fork函数被调用一次,但返回两次。两次返回的唯一区别是子进程的返回值是0,而父进程的返回值是子进程的进程ID。将子进程ID发回给父进程的理由是:因为一个进程的子进程可以有多哥,并且没有一个函数使一个进程可以获得其所有子进程的进程ID。fork使子进程得到返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获得其父进程原创 2020-09-21 20:54:48 · 278 阅读 · 0 评论 -
Linux文件操作(3)关于fopen的相关运用
fopen的原型 FILE *fopen(const char *path, const char *mode);path是C字符串,包含要打开的文件名称。mode是C字符串,包含文件访问模式,如下:“r” :打开一个用于读取的文件。该文件必须存在。“w” :创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。“a” :追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。“r+” :打开一个用于更新的文件,原创 2020-09-20 17:52:11 · 518 阅读 · 0 评论 -
Linux文件操作(2)
一、文件编程练手(1):实现Linux的cp命令思路: 打开src.c—>读src到buf–>打开/创建des.c–>将buf写到des.c–>关闭两个文件include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdio.h>#include<unistd.h>#include<string.h>#include<原创 2020-09-19 16:45:53 · 98 阅读 · 0 评论 -
Linux文件操作(1)
前言1.在Linux中要操作一个文件,一航先是打开一个文件,得到文件描述符,然后对文件进行读写操作(或者其他操作),最后关闭文件即可。2.强调一点:我们对文件进行操作时候,一定要先打开文件,打开成功后才能操作,如果打开失败,就不用进行后面的操作了,最后读写完成后,一定要关闭文件,否则会造成文件损坏。3.文件平时是存放在块设备中的文件系统文件中的,我们把这种文件叫做静态文件,当我们去open打开一个文件时,Linux内核做的操作包括:在内核在进程中建立一个打开文件的数据结构,记录下我们打开的这个文件;内原创 2020-09-18 19:33:02 · 232 阅读 · 0 评论