- 博客(71)
- 收藏
- 关注
原创 【C高级】有关shell脚本的一些练习
4、复制/etc/shadow到此目录,并重命名为test。5、把dir2打包并压缩为dir2.tar.xz。4、把当前目录下的所有脚本文件拷贝到dir2中。6、再把dir2.tar.xz移动到dir1中。1、显示/etc/group文件中第五行的内容。2、创建目录/home/ubuntu/copy。5、将当前目录中test的所属用户改为root。6、将test中其他用户的权限改为没有任何权限。3、把当前目录下的所有文件拷贝到dir1中,1、在家目录下创建目录文件,dir。7、解压dir1中的压缩包。
2024-09-20 20:44:35
804
1
原创 【笔试题面试题】(C++类)知识点汇总,常用概念,超详细,自我总结
构造函数:1、是一种特殊的成员函数,在创建类对象时被调用,用于初始化对象的状态2、当使用实例化对象时,系统自动调用3、构造函数分有参构造和无参构造,如果提供了构造函数,就不会再提供无参构造函数4、必须使用初始化列表的情况:形参名和成员变量名同名,有const修饰的成员变量,有引用的成员,有其它类的成员子对象1、在对象生命周期结束后,用于回收内存空间2、申明前加上一个 ~3、如果没有手动定义析构函数,系统会自己提供,如果定义,就不提供默认的析构函数4、当栈区空间释放后,系统会自动调用;
2024-09-13 20:26:52
1045
原创 【QT】自制一个简单的时钟(跟随系统时间)
使用QT完成一个简单的时钟图形化界面,功能是完成了时分秒指针能够跟随系统时间移动设计思路:1、首先将时钟的边框绘制出来2、定义出一个定时器t1,将定时器连接到update_slot槽内,每次超时,就会自动调用timeout信号,用来更新当前的界面update();3、绘制时分秒,通过系统时间控制坐标的旋转,依次绘制出时间。
2024-09-11 19:50:40
947
原创 【QT】实现TCP服务器,客户端之间的通信
使用QT完成了服务器端和客户端的简单搭建,和纯C语言还是有一定的区别,实现了服务器能够接收客户端连接,能够接收客户端发来的信息显示在窗口中。
2024-09-11 15:26:04
788
原创 【QT】自制一个简单的小闹钟,能够实现语音播报功能
做了一个自制的小闹钟,能够自己输入时间,以及对应的闹铃,时间到了自动播放设定的闹铃,可以随时取消重新设定,采用分文件编译 注意:需要在.pro文件中加入:QT += core gui texttospeech输出结果如下:
2024-09-10 20:41:45
869
原创 【C++】使用C++手动封装一个顺序表,包含成员数组一个,成员变量N个
错误记录:在add添加数据函数中,使用full函数判满操作后,调用完expend二倍扩容函数后,没有去处return 0,导致虽然成功扩容,但是数据少了一位。
2024-08-28 20:43:25
240
原创 【网络编程】使用函数汇总总结
记录自己学习,如果对你有帮助,可以一起学习进步,太多要用的函数了,记不住根本记不住,基本上是TCP、UDP之间的通信相关的一些函数。
2024-08-22 20:55:46
1147
原创 【笔试题面试题】(网络编程类1)知识点汇总,常用概念
1、TCP和UDP相同点和不同点(笔试面试)2、简述一下有关端口号的内容3、TCP服务器通信模型4、UDP服务器通信模型5、三次握手流程描述6、四次挥手流程描述7、TCP服务器与客户端建立连接,断开连接的过程8、在UDP传输中,如何知道对端掉线
2024-08-19 20:39:31
928
原创 【网络编程】 TCP机械臂测试(C语言)
1、通过以下操作实现机械臂控制w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂>>需要对机械臂发送的16进制数,共5个字节,协议如下<<2、0xff:起始结束协议,固定的3、0x02:控制机械手臂协议,固定的4、x:指定要操作的机械臂0x00 红色摆臂0x01 蓝色摆臂5、y:指定角度。
2024-08-13 18:40:22
422
原创 【网络编程】UDP实现网络通信(C语言、Ubuntu实现)
代码实现:分为udpSer.c(服务器端)和udpCli.c(客户端)输出结果如下:成功从客户端发送信息到服务器中。
2024-08-12 21:12:35
617
原创 【网络编程】TCP实现网络通信(C语言、Ubuntu实现)
/阻塞等待客户端的连接请求,如果有客户端发来连接请求,创建一个新的用于通信的套接字文件描述符。//为服务器套接字绑定ip地址和端口号,为了让客户端额能够找到服务器。3、listen();//将服务器套接字设置成被动监听状态,用于接收客户端的连接请求。//创建一个用于连接的套接字文件描述符。6、close();//关闭套接字、关闭监听。代码实现:分为tcpSer.c(服务器端)和tcpCli.c(客户端)
2024-08-12 20:47:40
903
1
原创 【IO项目】使用C语言实现多进程文件管理器(超详细!源代码+输出结果展示)
使用C语言实现多进程文件管理器功能概述实现一个多进程文件管理器,支持文件的查看信息(ls)、拷贝(cp)、删除(rm)、移动(mv)、更改文件权限(chmod)和查看内容(cat)。每个操作将在一个单独的进程中执行。技术栈编程语言:C系统调用和库:unistd.h, fcntl.h, sys/types.h, sys/stat.h, dirent.h, stdio.h, stdlib.h实现步骤文件操作函数:实现文件的查看信息(ls)、拷贝
2024-08-10 19:08:19
952
原创 【笔试题面试题】(IO类) 常问常考的一些知识点
1、标准IO和文件IO的区别2、关于缓冲区的介绍3、如何创建出一个守护进程?4、多个进程之间能否使用全局变量来进行进程间的通信?5、管道读写的特点(笔试面试题)6、有关死锁的问题(笔试面试题)
2024-08-07 20:40:13
731
原创 【IO】IPC通信机制函数(消息队列,共享内存,信号量集函数整理汇总)
整理了一下IPC通信的函数,包括消息队列,共享内存,信号量集;其中在使用有关信号量集的函数的时候,进行简单的封装函数功能之后,再进行使用,会更加方便。
2024-08-07 16:12:15
1445
原创 【IO】使用有名管道实现,一个进程用于给另一个进程发消息,另一个进程收到消息后,展示到终端上,并且将消息保存到文件上一份
输出结果如下:可以看出已经实现在一个进程输入,另一个进程中能够输出了,同时能够保存数据到文件中。输出结果如下:可以看出已经成功实现两个进程间的通信了。
2024-08-05 21:41:40
345
原创 【IO】进程间通信 有关管道,信号函数整理汇总
1、pipe函数:无名管道的API接口函数2、mkfifo函数:有名管道的API接口函数3、signal函数:将信号与信号处理方式连接4、alarm函数:闹钟函数功能:给进程设置一个定时器,以秒为单位,当定时器到位后,后向该进程发送一个SIGALRM的信号返回值:>0:表示返回的上一个定时器剩余的秒数,并且重置上一个定时器 0:表示之前没有设置定时器
2024-08-05 17:09:05
456
原创 【IO】如何创建一个守护进程
5、将标准输入、输出、出错文件描述符重定向到指定文件中去:dup2。1、创建子进程,让其成为孤儿进程:fork;2、将自己设置成会话组组长,不依赖终端:setsid。3、更改造作目录为根目录:chdir。4、设置文件操作权限:umask。守护进程的创建分为以下5个步骤。
2024-08-03 15:08:18
290
原创 【IO】使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源
1、使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源思路:1、首先创建了求文件长度的函数,在创建函数的时候,顺便将目标文件创建完成,返回源文件的大小2、定义了一个拷贝函数,首先移动光标位置,接下来就是正常的读写操作3、定义了线程函数,执行了文件拷贝功能4、主函数内先求出了源文件的大小,然后用结构体封装了需要传入线程里面的数据,通过结构体数组,分别传入拷贝文件前一半的参数与后一半的参数,分别存在buf[0]和buf[1]中。
2024-08-02 07:30:00
183
原创 【IO】多线程编程函数汇总、用法、功能(pthread_create、pthread_self、pthread_exit、pthread_jion、pthread_detach......)
1、pthread_create函数介绍(创建线程)2、pthread_self:线程号的获取3、pthread_exit:线程退出函数4、pthread_jion : 线程资源的回收5、pthread_detach:线程分离态6、pthread_setcancelstate:设置取消属性
2024-08-01 18:42:41
853
原创 【IO】多进程编程函数汇总、用法、功能(fork、getpid、getppid、exit、_exit、wait、waitp)
/定义变量存储创建的进程的id号//创建一个子进程//对pid进行判断while(1)printf("我是父进程\n");sleep(1);while(1)printf("我是子进程\n");sleep(1);sleep(1);return 0;功能:拷贝父进程得到子进程返回值:成功时,父进程中返回子进程的pid号,子进程中返回0,失败返回-1并置位错误码//创建一个子进程printf("我是父进程:pid = %d, 当前进程的id为:%d\n",pid, getpid())
2024-08-01 16:59:59
211
原创 【IO】使用父子进程完成两个文件的拷贝,父进程拷贝前一半内容,子进程拷贝后一半内容,子进程结束后退出,父进程回收子进程的资源
1、使用父子进程完成两个文件的拷贝,父进程拷贝前一半内容,子进程拷贝后一半内容,子进程结束后退出,父进程回收子进程的资源
2024-07-31 20:39:05
246
原创 【IO】使用文件IO完成,将源文件中的所有内容进行加密(大写转小写、小写转大写)后写入目标文件中,源文件内容不变
1> 使用文件IO完成,将源文件中的所有内容进行加密(大写转小写、小写转大写)后写入目标文件中,源文件内容不变2、并发和并行的区别3、什么是进程4、进程和程序的区别5、进程的状态有哪些6、系统中的多个进程的调度机制都有哪些7、思维导图
2024-07-30 20:16:47
967
原创 【IO】(标准IO、文件IO类1)函数使用汇总(fopen、fclose、fgetc、fputc、fgets、fputs、sprintf、fscanf、freadfwrite...)
汇总一下这些IO的函数的原型、例子、功能以及返回值,真的有些很容易混淆,记录学习,后续的函数慢慢全部汇总在这篇笔记里,以巩固自己的基础:fopen、fclose、fgetc、fputc、fgets、fputs、sprintf、fscanf、freadfwrite、open、close、read、write...
2024-07-29 21:16:41
1560
原创 【IO】 对于fread,fwrite,time_t,fseek等操作,写日志文件,完成文件的拷贝,对bmp图像进行读写操作;
可以看到已经把02fcopy.c文件拷贝到了目标文件user_copy.txt里。:ctrl+c:停止程序。
2024-07-29 20:25:10
260
原创 【C语言项目】 以链表实现的管理系统(注册、登录、对表进行数据操作)
项目:基于链表的通信录管理意义:对于一个通信录来说,要管理联系人的信息,包括编号,姓名,性别,电话。开发其系统主要为了帮助用户提高通讯录有管理效率,节约资源,提高信息的精确度采用分文件编译,link_list.h,link_list.c,main.c在堆区申请了空间用于存放链表link_list.h中定义了两个结构体,一个是管理结构体,一个是人员信息结构体,同时包含了函数的声明link_list.c中完成了函数功能的封装mian.c主函数里,使用了两个while循环,进行菜单的循环展示,如
2024-07-27 20:48:55
1353
原创 【IO】 使用fgets和fputs完成两个文件的拷贝 使用fgets统计给定文件的行号
1、使用fgets和fputs完成两个文件的拷贝2、使用fgets统计给定文件的行号fgets和fputs的使用方法函数原型:int fputs(const char *s,FILE *stream); char *fgets(char *s,int size,FILE *stream);fupts的功能:将给定的字符串写入到文件中 返回值:成功返回写入的字符个数,失败返回EOFfgets的功能:将stream所指向的文件中,最多读取siz
2024-07-26 20:28:40
882
原创 【C语言】 二叉树创建(结构体,先序遍历,中序遍历,后续遍历)
二叉树的创建:首先先定义一个结构体,里面包含数据(data),指向左子树的指针(L),指向右子树的指针(R)三个部分 在创建树的函数中,首先先输入一个数,且当输入'#'的时候,表示这个位置没有值输入,返回NULL;成功输入值后,用malloc申请一个结点,B->data = data;然后再次调用创建函数(函数本身),但是是这个结点的左子树B->L = tree_create();以此类推就能成功创建一颗树了。 3种遍历方法结构基本差不多,无非是输出的时机不一
2024-07-24 19:44:43
608
原创 【笔试题面试题】(C语言类) 概念汇总(笔试面试题常问)
笔试题面试题1、什么是野指针,野指针出现的情况有哪些,怎么避免?2、介绍一下static关键字和const关键字3、描述一下栈和队列4、define和typedef的区别5、#include< >和#include" "的区别
2024-07-23 20:04:34
571
原创 【C语言】 约瑟夫环,循环链表实现
1、循环链表实现约瑟夫环,每次经过特定步数删除一个元素更新一下,昨天的代码有点问题,没有考虑到头结点的影响,我的方法是:在进行步数位移的时候判断标记点是否走到头结点;同时在后面删除元素的时候,再次判断位移点有不有走到头结点,如果走到了的话,就直接再往后移动一位,这样就成功跳过头结点了
2024-07-22 20:42:27
1706
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人