系统编程
佳佳鸽
这个作者很懒,什么都没留下…
展开
-
基于Linux、C线程池的目录文件拷贝
设计目标①实现递归读取目录文件,线程池多线程拷贝普通文件②在实现功能①的同时,显示动态进度条③实现在完成功能①后,统计并显示拷贝消耗时长④实现根据用户指定的文件类型进行拷贝⑤实现打印目录、文件的树状图部分效果如下:main.c#include "copy_file.h"#include "thread_pool.h"int main(int argc, char **argv){ if(argc != 3) { printf("参数有误!用法:<源文件><原创 2020-08-15 09:30:01 · 2266 阅读 · 1 评论 -
互斥锁应用实例
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。此实例已解决:库存数量num小于线程个数出现负数的问题#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <unistd.h>#include <pthread.h>int num=5; //定义变量表示库存原创 2020-08-11 20:02:02 · 994 阅读 · 0 评论 -
多进程实现共享内存的简单通信
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。进程1:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <signal.h>#原创 2020-08-11 19:52:59 · 395 阅读 · 1 评论 -
多线程设置静态优先级
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。设置静态优先级的函数pthread_attr_setschedparam(pthread_attr_t *attr , const struct sched_param *param);第二个参数为如下的结构体:struct sched_param{ int sched_priority; //通过给它赋值,设置静态优先级的数值大小};具体代码如下:#inc原创 2020-08-10 19:41:26 · 457 阅读 · 0 评论 -
线程编译(undefined reference to ‘pthread_create‘,undefined reference to ‘pthread_join‘,collect2: error:)
Linux线程编译时,出现以下报错:undefined reference to 'pthread_create'undefined reference to 'pthread_join'collect2: error: ld returned 1 exit status问题原因:这个问题其实是库文件不齐全导致的,pthread 库不是 Linux 系统默认的库,需要在编译时手动链接线程库解决方法:gcc test.c -o test -lpthreadgcc test.c -o tes原创 2020-08-10 14:05:00 · 305 阅读 · 0 评论 -
Linux信号(系统编程信号)
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。Linux信号:信号的作用:linux通过信号去控制进程的行为动作(程序的退出,程序的暂停,程序的继续)信号总共有四种响应方式:第一种:信号的默认响应动作(linux系统已经规定好的)第二种:改变信号的响应动作第三种:信号的忽略第四种:信号的阻塞(屏蔽)常用信号SIGINT ------ 相当于ctrl+cSIGCONT ------ 程序继续SIGST原创 2020-08-08 17:14:08 · 212 阅读 · 0 评论 -
无名管道(PIPE)与 有名管道(FIFO)
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。无名管道(PIPE)部分:(1)无名管道的创建:头文件: #include <unistd.h>函数原型: int pipe(int pipefd[2]);参数: pipefd: 一个至少具有两个int型数据的数组 pipefd[0] :读端的文件描述符,只能读取管道中的信息 p原创 2020-08-08 16:33:40 · 951 阅读 · 0 评论 -
多进程的创建、退出、回收、进程ID号的获取
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。多进程部分:(1)进程的创建:头文件 : #include <unistd.h>函数原型: pid_t fork(void);返回值: pid_t id = fork(); if(id > 0) //id > 0 父进程 else if(id == 0) //id == 0 子进程 else /原创 2020-08-08 15:14:36 · 642 阅读 · 0 评论 -
简易多进程单机多人群聊
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。本篇应用消息队列实现简易多进程单机多人群聊,实现上线通知、下线通知、多人群聊的基本功能,但是代码写得较为粗糙笨拙。效果如下:迪西部分:#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <sys/原创 2020-08-08 11:00:08 · 285 阅读 · 1 评论 -
改变信号的响应动作与发送信号的应用实例[signal()/kill()]
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。要求:售票员司机(可以持续报站)用信号模拟司机售票员:创建子进程代表售票员,父进程代表司机。1:售票员捕捉SIGINT(代表开车),发SIGUSR1 给司机,司机捕捉到SIGUSR1 信号后打印“move to next station”。2:售票员捕捉SIGQUIT(代表靠站),发SIGUSR2 给司机,司机捕捉到SIGUSR2 信号后打印“stop the bus”。原创 2020-08-07 08:36:32 · 409 阅读 · 0 评论 -
双进程有名管道通信应用实例
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。要求:p1和p2两个进程通信,用有名管道实现需要两个管道文件第一个管道 p1写入,p2读取,第二个管道 p2写入,p1读取p1写入数据p2把读到的数据做简单处理后返回给p1,反之亦然所谓的简单处理: 如p1写入"123456",p2收到之后,反馈给p1 “received:123456”p1收到该反馈信息后,会和之前的信息确认,没有错误才发送下一个信原创 2020-08-05 08:40:02 · 593 阅读 · 0 评论 -
双进程无名管道通信应用实例
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。要求:①用pipe产生一个无名管道之后,再产生两个子进程A,B②子进程A往管道写了一句HELLO后就退出了③子进程B读到A写入的数据,再往管道中写入HELLO WORLD④父进程读取最后管道中的数据并打印#include <stdio.h>#include <unistd.h>#include <string.h>#include原创 2020-08-05 08:29:21 · 379 阅读 · 0 评论 -
有名管道FIFO,进行双进程的“双向通信”
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。本篇记录应用有名管道FIFO,进行双进程的“双向通信”,并当某一方收到/发送“quit”马上结束通信,具体代码如下:进程一:#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>原创 2020-08-04 17:16:23 · 1884 阅读 · 0 评论 -
无名管道PIPE,进行父子双进程的“双向通信”
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。本篇记录应用无名管道PIPE,进行父子双进程的“双向通信”,并当某一方收到/发送“quit”马上结束通信,具体代码如下:#include <stdio.h>#include <unistd.h>#include <string.h>#include <strings.h>#include <stdlib.h>#原创 2020-08-04 15:55:24 · 2462 阅读 · 5 评论 -
LCD显示屏加入百叶窗特效显示BMP图片
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。本篇记录LCD显示屏加入百叶窗特效显示BMP图片,通过双线程并行显示,实现百叶窗特效。在显示函数中,已对BMP图片显示位置进行了居中设置,而缩小倍数只需通过在调用函数时进行传参即可。具体代码如下:myhead.h部分#include <stdio.h> #include <string.h>#include <stdlib.h>#inc原创 2020-08-03 20:31:35 · 6567 阅读 · 2 评论 -
lcd多线程显示bmp图片出现内存问题中断
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。本篇记录lcd显示屏加入百叶窗效果显示bmp图片时,出现在某张bmp图片开始出现内存溢出问题。其中报错如下:[ 199.690000] lowmemorykiller: Killing 'show' (487), adj 0,[ 199.690000] to free 4180kB on behalf of 'show' (705) because[ 199.6原创 2020-08-03 20:21:06 · 876 阅读 · 6 评论