linux
派大星有个梦想
这个作者很懒,什么都没留下…
展开
-
俄罗斯方块开发板重构版
简介:之前写过一篇俄罗斯方块在ubuntu上用ANSI控制码运行的文章,因为没有可移植性,并且没有考虑信号处理函数的可重入性,当方块下落速度较快时,可能导致程序崩溃,在此基础上用frmaebuffer和多线程并发来对以前程序进行重构。代码:game.h#ifndef GAME_H__#define GAME_H__#define ROW 19#define LINE 14#define DIA 4#define BASE 7#define SPINSTA 4//方块函数,原创 2022-04-12 23:31:59 · 411 阅读 · 1 评论 -
C语言实现流媒体广播项目
一、简介一个简单的流媒体项目,基于客户端/服务器模型(C/S)开发,采用UDP组播技术,实现MP3格式音乐广播系统。服务器端采用多线程处理频道信息,实现媒体库(MP3)读取并进行流量控制(令牌桶),并通过UDP组播发送;客户端采用多进程,实现父进程接受来自网络的数据,通过进程间通信技术管道发送给子进程,子进程进行数据解码并输出到特定频道。项目简略图:-由于是一个广播系统,C/S之间的通讯采用无连接的udp组播,组播相对于广播更加灵活并且节省资源,故采用组播技术- 由于需要考虑到节目单频原创 2022-04-05 17:49:11 · 1829 阅读 · 0 评论 -
守护进程的编程规则(加入系统日志)和改进
守护进程:一般是指 Linux中的后台服务进程,它是一个生存周期较长的进程,如其父进程为init进程,通常独立于控制终端,即 不接受电脑用户的直接操作。守护进程是一个特殊的孤儿进程。会话(session): 会话是一个或多个进程组的集合。通常一个会话开始于 用户登录,终止于用户退出,在此期间用户运行的所有进程都属于会话进程组:每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。每个进程组有一个组长进程,组长进程的进程ID等于进程组ID。如果调用setsid()的进程不原创 2022-03-21 17:36:38 · 121 阅读 · 0 评论 -
select定时器的简单实现
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); void FD_CLR(int fd, fd_set *set);//从指定的文件描述符集合中删除指定文件描述符fd int FD_ISSET(int fd, fd_set *set);//判断文件描述符fd 是否存在于文件描述符集合set中 void...原创 2022-03-21 17:17:32 · 916 阅读 · 0 评论 -
mmap函数使用实例
NAME mmap, munmap - map or unmap files or devices into memorySYNOPSIS #include <sys/mman.h>/* 映射,返回值为映射到的最终地址。addr: 目标内存空间 放到当前进程空间的起始地址,若为空,则函数自己找可用的位置length:需要映射目标空间的长度port : 映射过来的内存属性,即可以对该内存做什么操作,即映射后的操作权限 PROT.原创 2022-03-21 17:10:11 · 440 阅读 · 0 评论 -
clion通过ssh远程连接ubuntu进行linux下的C/C++开发
第一步:找到设置中的工具链,点击添加第二步:选择远程主机 ,点击选择配置第三步:用ifconfig查看ubuntu或者想要连接的 linux系统的ip地址第四步:填好配置信息后,点击测试连接第五步:点击向上箭头将配置好的工具链顶到最上方第六步:点击工具中的部署中的配置第七步:选择刚刚部署好的主机中的映射,映射的路径即clion和远程主机可以同步的地方第八步:点击工具中的启动ssh会话即可远程连接ubuntu..原创 2022-03-13 22:12:51 · 12084 阅读 · 7 评论 -
sigaction函数的使用和优点
NAME sigaction, rt_sigaction - examine and change a signal actionSYNOPSIS #include <signal.h> int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);signum: 所要操作的信号.原创 2022-03-13 21:39:41 · 575 阅读 · 0 评论 -
信号的响应过程
内核为每个线程都维护了 两个位图:mask和pending信号屏蔽字 mask:用来表示当前信号的状态,mask初始值一般全部都是1pending位图: 用来记录当前进程收到哪些信号,一般初始值全部都是0在程序运行时间片耗尽时,被内核的中断机制打断时,程序保存当前的执行现场,进入到内核态的就绪队列等待就绪,当再次获取时间片时,从内核态回到用户态期间程序会将mask位图 按位与上pending位图来判断是否接收到信号,当没有信号时,位图结果为0,表示没有收到信号,程序回到之前的执行现场...原创 2022-03-13 21:16:51 · 1109 阅读 · 5 评论 -
select函数缺陷分析
与poll和epoll不同,select函数是事件为单位组织文件描述符,监视的行为较为单一。函数原型:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);1、每次调用都需要重新设置fd_setselect中布置监视任务的位置和返回监视的结果位置存放在同一空间,一旦监视行为发生,函数返回,其它集合会被清空。2、频繁的从用户态切换内核态进行拷贝,效原创 2022-03-10 23:24:52 · 595 阅读 · 0 评论 -
Posix标准有名信号量和无名信号量的使用
一、有名信号量 在文件系统中有一个名字 即有一个对应的inode节点 ,但是信号量的内容(值)确实存在于内核中 ,一般可以用于任意线程或进程间。 有名信号量的操作一般有: sem_open sem_wait/sem_post sem_close sem_unlinksem_t *sem_open(const char ...原创 2022-03-04 16:12:50 · 689 阅读 · 0 评论 -
Linux下c实现ls
主要功能及实现:1,使用命令行参数分析,暂时只支持 -l -a -n ,可混合使用或不使用2,对于隐藏文件目前只考虑 . 和 ..源代码如下:/************************************************************** > File Name: myls.c > Author: LuoLiang > Mail: 1204553475@qq.com > Created Time: 2022年01.原创 2022-01-16 16:50:39 · 593 阅读 · 0 评论 -
linux下c语言用mplayer实现简单的音乐播放器
主要功能及实现:1,播放,暂停及继续,上一页下一页,上一首下一首和退出2,以简单的并发来实现顺序播放等功能3,可根据不同格式导入歌曲4,ANSI控制码实现简单的界面制作缺点:1,未处理歌名太长覆盖界面的问题2,上一页,下一页只经过简单处理,不是很方便以下只对几个关键代码单独展示,完整源代码见文章末尾:一、带路径的歌曲名导入链表利用glob函数解析目录下的音乐名字并导入链表/* 歌曲路径和名字导入链表 */static LList_st *loading原创 2022-01-16 16:43:06 · 7640 阅读 · 5 评论 -
vi/vim基本命令和操作
vi/vim vi/vim是linux中最基本、最常用、功能非常强大的命令行编辑器 vim是vi的一个升级版本 vi有两种工作模式: 命令模式: 键盘上所有的输入字符都被当做是一个命令(快捷键) 如: 用vi打开一个文件,按d键,并不会有d的字符出来 此时d被当做是一条命令 输入模式: 键盘上所有的输入字符都被当做...原创 2021-12-30 11:43:11 · 496 阅读 · 0 评论