- 博客(44)
- 收藏
- 关注
原创 C++对比C语言新的赋值
/int a=10;只能用于初始化不能运用于再次赋值。推荐你使用at函数,原因时at函数更安全。但是[ ]的方式效率更高。③string循环分为普通循环(for)和for each循环。可以使用cin把用户在命令行中的内容赋值到变量中。// 接收键盘输入,一个整数和字符串,可以连续操作。①在string中sizeof=strlen;// C++的字符串是string。// 会报一个异常,程序运行停止。④ string字符串与数字转换。4.string是字符串类。// 输出一个越界数据。
2024-08-27 19:45:02
369
原创 C++引用
3.声明引用的时候,初始化的值可以是纯数值,但是此时需要使用const关键字修饰,表示该引用为常量引用,这样引用的值不可变。写一个函数,函数有两个参数a和b,函数的功能是交换两个传入的参数原来变量的值。5.可以使用const修饰引用,此时如果原变量的值改变,引用的值也改变。2.声明引用时,必须要初始化:且不能初始化为NULL ,NULLPTR。可以将变量引用的地址赋值给一个指针,此时指针指向还是原来的变量。可以改变引用的值,但是不能再次成为其他变量的引用。
2024-08-27 19:20:17
273
原创 IO多路复用—前言
select特点I/O多路复用基本思想:先构造一张有关描述符的表,然后调用一个函数。当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回。函数返回时告诉进程哪个描述符已就绪,可以进行I/O操作。理解:同时对多个文件描述符进行监听,当有文件描述符发生相应的事件的时候,返回这个文件描述符。实现IO多路复用的方式 ——select poll epoll;为了用这些函数创建并发服务器!!!
2024-08-14 21:10:28
275
原创 【网编】——UDP编程
sendto(sock套接字,buf地址,buf大小,0,recv(sock套接字,buf地址,buf大小,0,结构体的指针,指针大小)0:客户端退出=quit。结构体的指针,指针大小)
2024-08-14 19:54:25
520
原创 网编——TCP与UDP
TCP和UDP各有优缺点,选择哪种协议取决于具体的应用需求。如果需要高可靠性和顺序保证的数据传输,应使用TCP;如果需要快速传输且可以容忍一定数据丢失的应用,则可以选择UDP。
2024-08-09 13:38:32
342
原创 IO进程—进程间的通信—共享内存
共享内存的一个重要特点是其高效性。由于所有进程直接访问同一块内存,因此访问速度非常快,类似于访问进程自身的内存空间。共享内存同步和互斥访问的最佳实践涉及多种方法,每种方法都有其优缺点。共享内存指的是操作系统在物理内存中申请一块空间,应用程序可以映射到这块空间,进行直接读写操作。2.多进程间交换信息,内核留出一块内存区,将访问进程映射到自己私有地址的空间。的进程间通信方式,进程可以直接读写内存,不需要数据拷贝。4.多个进程共享一个内存,需要某种同步机制。创建唯一key值 ftok。映射共享内存shmat。
2024-08-06 19:53:27
238
原创 [io]进程间通信 -信号函数 —信号处理过程
sighandler_t signal(int signum, sighandler_t handler);功能:信号处理函数参数:signum:要处理的信号handler:信号处理方式 SIG_IGN:忽略信号SIG_DFL:执行默认操作handler:捕捉信#include<stdio.h>#include<signal.h>#include<unistd.h>void
2024-08-06 13:35:57
312
原创 [io]进程间通信 -信号函数pause挂起:
int pause(void);功能:用于将调用进程挂起,直到收到信号为止。(代替while(1))返回值:-1:pause只返回一次,即在接收到信号并由信号处理函数返回后。 如果没有信号到来,或者信号处理函数没有返回,pause将一直阻塞,直到接收到信号为止头文件:#include<unistd.h>
2024-08-05 21:09:27
154
原创 [io]进程间通信 -信号函数ALARM:
1.一个进程只能有一个闹钟时间。如果在调用alarm时已设置过闹钟时间,则之前的闹钟时间被新值所代替2.当时间到达设定的秒数时,系统会生成一个 SIGALRM 信号,该信号默认行为是终止进程。需要注意的是,由于进程调度的延迟,进程实际接收到该信号的时间可能会有延迟。3.在单线程程序中是允许的,但在多线程程序中并不适用
2024-08-05 20:58:33
315
原创 [io]进程间通信 -信号概念、分类、工作原理
信号是一种机制,用于在不同进程之间传递事件信息信号的产生:包括对前台进程(Ctrl+C)、系统状态变化(如内存访问错误)、终端(kill命令)。工作原理:当一个信号被发送到某个进程时,操作系统会中断该进程的正常执行流程,并将信号交给进程的信号处理函数进行处理。处理方式:忽略信号(不处理),捕获信号(执行自定义信号处理函数),执行默认操作(执行信号默认的功能。
2024-08-05 20:22:34
225
原创 [io]进程间通信 -有名、无名管道 区别
使用场景1.固定读端fd[0]写端fd[1]2.文件IO进行操作3.不支持lseek()操作4.数据存储在内核空间1.文件系统中存在管道文件2.文件IO操作3.不支持lseek4.先进先出5.数据存储在内核空间
2024-08-05 19:31:15
235
原创 [io]进程--进程间通信 -有名管道 函数、操作
1.使互不相关的两个进程互相通信2.通过路径名来指出,并且在文件系统中可见,但内容存放在内存中3.进程通过文件IO来操作有名管道4.有名管道遵循先进先出原则5.不支持lseek()操作。
2024-08-05 19:22:18
392
原创 [io]进程--进程间通信(总论)
进程间通信(Inter-Process Communication, IPC)是操作系统中一种重要的机制,允许不同进程之间交换数据和协调操作。:用于父子进程之间的通信,可以是匿名管道或命名管道(FIFO)。匿名管道仅限于同一进程组中的父子进程通信,而命名管道则可以在任何父子进程之间通信。:不仅适用于同一主机上的进程间通信,也支持跨主机的进程间通信。套接字是一种基于网络协议的通信方式,可以实现更复杂的通信需求。:虽然具体细节较少,但通常指的是文件描述符或流接口,允许进程通过文件系统中的文件进行数据交换。
2024-08-03 11:30:42
254
原创 [io]条件变量--函数以及具体操作
条件变量是一种重要的线程同步机制,它允许线程在。条件变量通常与互斥锁(Mutex)一起使用,以实现线程间的通信和同步操作。
2024-08-03 10:53:29
538
原创 死锁的产生
是指两个或两个以上的进程/线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去互斥条件即当资源被一个线程使用(占有)时,别的线程不能使用占有并等待条件:一个进程已经占有了某些资源,但还请求其他资源,资源只能由资源占有者主动释放。不剥夺条件:进程不能被剥夺其已占有的资源,只有当它完成对这些资源的使用时,才会释放这些资源。循环等待条件。
2024-08-02 21:27:41
170
原创 [io]线程——互斥(函数具体操作)
是一个线程同步函数,用于销毁互斥锁并释放其占用的资源。在使用此函数之前,必须确保互斥锁没有被任何线程持有,并且对于动态分配的互斥锁,在释放内存前应先销毁互斥锁。成功销毁后,互斥锁变为未初始化状态,可以重新初始化以供再次使用。锁定一个已经被其他线程占用的互斥锁时,该线程会进入阻塞状态,直到该互斥锁变为可用为止。一旦互斥锁被当前线程成功锁定,该线程就成为该互斥锁的当前所有者,并且在释放该互斥锁之前,它将保持对该锁的所有权。,则使用默认的互斥锁属性。如果互斥锁被成功销毁,该函数返回0;指向互斥锁属性的指针。
2024-08-02 20:38:11
351
原创 [io]线程——互斥(前戏需要了解的知识)
在多线程编程中,临界资源,具有唯一性和排他性。其主要目的是防止多个线程对共享资源进行并发访问时发生数据竞争和不一致问题。互斥通过锁实现:如和等。
2024-08-02 16:09:56
210
原创 [io进程]——线程同步(前戏需要了解的概念)
线程同步是指在多个线程并发执行时,通过一定的机制保证它们按照一定的以达到正确的结果。其主要目的是,确保数据的和。
2024-08-01 23:30:32
221
原创 [io进程]——取消线程pthread_cancel以及取消检查
返回值:成功:0 失败:错误码功能:向指定的线程发送取消请求,请求该线程终止执行。向目标线程发送取消信号(CANCEL信号),使目标线程在终止执行是一个用于请求终止线程执行的函数,但其实际效果依赖于目标线程的可取消状态和设置的取消点。调用该函数后,线程会继续运行,直到满足取消条件。
2024-08-01 21:18:46
232
原创 [io进程]——线程分离函数pthread_detach
提供了一种高效且简便的方式来管理线程资源,特别是在高性能服务器等场景下,可以显著提高系统的效率和稳定性。3.这个函数的调用不会导致线程立即终止,但一旦线程被设置为分离状态,它就不能再使用。2.线程在终止时自动回收资源,不需要其他线程等待它的退出状态。
2024-08-01 20:19:31
244
原创 【io进程】线程-函数(获取线程ID)pthread_self
功能:阻塞当前线程,直到指定线程终止。主要目的是同步线程间的执行,确保主线程能够等待子线程完成后再继续执行。,因此在打印或比较时需要使用特定的格式化方式,例如使用%lu。时,当前线程会暂停执行,直到 tid 指定的线程结束为止。时需要注意的是,其返回的线程ID是一个不透明的数据类型。来等待一个指定的线程结束,并且不获取该线程的返回值。注意:使用pthread_self()来避免显示结果出问题。
2024-08-01 19:31:56
157
原创 [IO进程]——守护进程
特点:生命周期较长,在系统启动时开启,系统关闭退出是一个后台进程,不依赖于控制终端,且周期性执行的一个进程步骤:1.创建子进程,父进程退出让子进程变成孤儿进程,成为后台进程;fork()2.在子进程中创建新对话让子进程成为会话组组长,让子进程完全脱离终端;setside()
2024-07-31 22:07:22
151
原创 IO进程--进程回收函数
非阻塞:子进程没结束时“0”;进程号:>0指定子进程进程号;阻塞或非阻塞:"0'阻塞 “WNOHANG”非阻塞。功能:回收进程资源,阻塞函数,等待子进程退出后结束阻塞;参数:子进程退出状态(不接受子进程状态设为 NULL)” 失败“-1”返回值:正常:结束子进程进程号。返回值:成功“回收子进程的。子进程退出状态:NULL。
2024-07-31 20:22:03
319
原创 “库“..
把常用函数目标文件打包在一起,提供相应函数接口,便于使用;本质上是可执行代码的二进制形式。cd/usr/lib lib:库文件cd/usr/include include:头文件Windows与Linux本质不同,二者库的二进制不兼容。
2024-07-30 21:28:12
120
原创 标准IO文件IO区别
文件定位:fseek/rewind/ftell。2.有缓冲区(减少系统调用提高效率)4.除目录外的其他文件(一切皆文件)读写文件:fgetc/fputc。读写文件:read/write。1.围绕流(FILE*)操作。3.默认打开三个文件描述符。1.围绕文件描述符操作。关闭文件:fclose。打开文件:fopen。关闭文件:close。文件定位:lseek。
2024-07-30 20:06:58
135
原创 文件IO——文件属性获取
功能:获取文件属性返回值:成功:0;失败:-1;struct stat {dev_t st_dev; //设备idino_t st_ino; //inode号mode_t st_mode ; //文件类型和权限nlink_t st_nlink ; //硬链接数uid_t st_uid ; //用户gid_t st_gid ; //组
2024-07-29 21:32:04
126
原创 文件IO——读写文件
ssize_t write(fd文件,buf要写的内容,count期望值);返回值:成功:实际写入个数。返回0:表示读到文件末尾。:向指定文件写入数据。
2024-07-29 20:18:53
173
原创 文件IO——打开文件open,关闭文件close
定义:在posix(可移植操作系统接口)中定义的一组输入输出函数。特点:1.没有缓冲机制(每次操作都经过系统调用)2.围绕文件描述符操作,都是非负整数(0.1.2)3.默认打开三个文件描述符(0标准输入、1标准输出、2标准错误)4.除目录外其他任意类型文件都可以操作。
2024-07-29 19:36:46
282
原创 标准IO:freopen重定向打开文件
a+:可读可写,文件不存在创建存在追加,读从头读写时在文件末尾。w+:可读可写,文件不存在创建存在清空,流在文件开头。w:只写,文件不存在创建存在清空,流定义在文件开头。a:追加,文件不存在创建存在追加,流在文件末尾。r+:可读可写,流在文件开头。打开方式:r:只读,流被定义到文件开头。返回值:成功“返回文件流指针”
2024-07-29 15:55:49
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人