![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux系统编程
文章平均质量分 72
进程、线程、通信~~~~
玫瑰花店
为之则易,不为则难!
展开
-
Ubuntu安装VScode,C/C++头文件红色波浪线
解决方法1、卸载gcc g++sudo apt-get --purge remove gccsudo apt-get --purge remove g++2、更新sudo apt updatesudo apt upgrade3、安装依赖sudo apt-get install libc6-devapt-get install libc6-dev-amd644、安装gcc g++sudo apt-get install gccsudo apt-get install g++5原创 2021-10-13 15:46:50 · 2844 阅读 · 2 评论 -
Ubuntu下使用C语言和MySQL模拟一个银行管理系统
首先MySQL基础语法就不说了就增删改查,网上一找一大堆。API函数在MySQL官网上面都有。下面会主要介绍几个常用的。MYSQL C语言API1、云服务器选择我选择的是腾讯云服务器,学生认证后很便宜,一年才90多人民币。3月起租才27RMB。如果同时用腾讯云服务器的小伙伴注意咯,购买时候选择的是Ubuntu18.04的,但是不知道怎么回事,默认的c/c++开发环境是用不了的,测试你会发现提示找不到函数头文件。解决方法:删除gcc安装和配置文件。sudo apt-get --purge remo原创 2021-02-05 22:09:11 · 424 阅读 · 0 评论 -
select函数--IO多路复用详解
本章基于网络编程,需要学习网络编程的可以看我这篇博客:socket编程(超简单、详细、可运行)–实现一个简单的聊天程序什么是多路复用IO呢?多路io:允许同时对多个I/O进行控制可能这样说还是有点抽象,stm32下面有GPIO口,如果我需要一个LED屏幕连接在32开发板上面,是不是又很多的接线,每个接线接着板子上面的对应引脚上面,既然我们接线这个引脚了,是不是首先需要让这个引脚处于使能状态,这就是开时钟,多个引脚我们是不是要开多个引脚的时钟。配置好后我们的开发板的处理器是不是会按照需要去对这些IO口原创 2021-01-22 21:14:54 · 1538 阅读 · 0 评论 -
Linux系统编程之线程深度详解(有实例)
线程基础*******************************************************线程创建函数:int pthread_create(pthread_t * thread, const pthread_attr_t * attr, void *(*start_routine)(void*), void *arg);thread:线程的IDattr:线程的属性默认直接给NULLstart_routine:函原创 2021-01-13 10:23:32 · 362 阅读 · 0 评论 -
Linux系统编程--共享内存
共享内存介绍共享内存之前我们先看一下键值。什么是键值?键值:就是保证进程之间打开的通信的介质是同一个linux的键值:以某个数值打开一个文件所产生出来的ID是固定的比如说一个文件在/home/lyx/test/1.c特定的函数:获取键值的函数XXX(/home/lyx/test/1.c);打开这个文件,返回的ID是一个定值不管你用哪个进程不管何时刻,你在整个Linux下打开这个文件返回的这个ID都是一定的保证唯一性:只要有唯一性就可以利用这个唯一性来创建消息队列、两个进程都用原创 2021-01-11 17:31:58 · 313 阅读 · 1 评论 -
linux下用C语言实现MP3播放器
首先我们要来看几个函数:接下来我们安装一下madplay这是一个播放器。sudo apt-get install madplay建议给软件源换成阿里的,下载的快。安装完成后测试方法为:madplay xxxx xxxx最好是绝对路径示例:madplay /home/jason/music/stan.mp3程序思路:首先打开存放音乐文件的目录把然后找出所有的.mp3文件并保存文件名文件名有了,路径有了。就简单了嘛接下来看一下madplay指令:管理madplay的主程序原创 2021-01-08 16:40:43 · 6357 阅读 · 2 评论 -
linux之Makefile深入
main: main.o fun1.o fun2.o fun3.o fun4.o gcc main.o fun1.o fun2.o fun3.o fun4.o -o mainmain.o: main.c gcc -c main.c -o main.ofun1.o: fun1.c gcc -c fun1.c -o fun1.ofun2.o: fun2.c gcc -c fun2.c -o fun2.ofun3.o: fun3.c gcc -c fun3.c -o fun3.ofun4.o:原创 2020-12-30 09:49:33 · 197 阅读 · 1 评论 -
linux下动态库和静态库的创建
什么是库?简单来说,就像函数一样。你自己写了一个函数,想调用就调用嘛。如果别人也想用你这个函数,但是你这个函数写的特别优秀漂亮,功能特别完善。你会给他源码嘛?所以库就是类似一个你自己写的函数,你可以给代码隐藏起来。这样别人可以用但是不能看到源码。—————————————————————————在Linux里面库可以分为两种:静态库 xxx.a动态库 xxx.so首先我们先来看一下静态库静态库就是将你调用的库编译到可执行程序里面。具体我们看例子我们先创建两个小程序:static_jaso原创 2020-12-28 16:39:07 · 275 阅读 · 0 评论 -
Linux进程间通信(2)---无名管道和有名管道(超简单,有示例程序)
管道是什么呢?比如说有两个池塘A和B如果我先要A和B中的水可以相互流动,那么我们只需要在两个池塘间安放一条水管就可以了嘛!如果将A、B换成我们程序中的进程,那么使这两个进程通信的那根管子就叫管道。管道可以分为两种:无名管道:用于父子进程间的通信。有名管道:用于任意两进程间的通信。首先我们来看一下无名管道管道不是有两端嘛,每一端都可以流入水和流出水,但是流入和流出是不是只能有一种情况呢。所以在无名管道中也一样,无名管道的两端,每一端都可以读和写。若一端为读就要关闭他的写功能,另一端就只能为写关原创 2020-12-18 17:54:22 · 363 阅读 · 1 评论 -
Linux进程间通信(1)---信号(超简单,有示例程序)
开篇先说一句,这是信号!!!!!不是信号量进程间的通信可以分为一下几类:1、信号2、管道3、共享内存4、消息队列5、信号量集6、网络编程以上后续我都会一个一个更哦!第一节我们先讲信号:1、信号的本质?信号就类似中断,当中断源被触发就去执行中断服务函数。这样说好理解吧!再通俗点说,信号就像马路上的红绿灯,红灯亮起时候,不允许车通过,当绿灯亮起时候车辆可以通行。2、信号的分类?按照可靠性方面: 可靠信号 不可靠信号与时间关系分类: 实时信号 非实时信号3、信号的处理方式?原创 2020-12-06 22:18:22 · 343 阅读 · 4 评论 -
socket编程(超简单、详细、可运行)--实现一个简单的聊天程序
首先我们先来看一下套接字通讯的流程!图片中的read()和write()等同于send()和recv()socket通信流程服务器端:1、创建套接字socket2、绑定套接字bind3、监听listen4、等待连接accept5、接收发送recv、send6、关闭套接字close客户端:1、创建套接字socket2、连接服务器connect3、接收发送recv、send4、关闭套接字close我们先看一下这样几个函数,稍后我们在继续#include<arpa/ine原创 2020-11-12 15:33:32 · 7086 阅读 · 9 评论 -
linux之makefile编写2
在上一篇博文《linux之makefile编写、Linux模块化编程1(最简单的方法)》中我们介绍了makefile最基础的应用。今天我们来看一下稍微深层次一点的makefile文件的编写!话不多说直接上例子在当前目录下面我有三个.c文件分别是qq.c qq1.c qq2.c这三个是独立的文件,每个文件都可以编译成一个可执行文件。也就是说这个三个文件包含3个主函数(三个main函数)。这样我们...原创 2020-03-31 22:13:53 · 244 阅读 · 1 评论 -
linux之makefile编写、Linux模块化编程1(最简单的方法)
首先要理解一下makefile是什么东西,有什么作用!官方的话就不说了,简单粗暴理解。makefile就是集成编译,比如说你写了好多个**.c**文件。平常就是一个一个gcc,就算你编译好了还要一个个运行不是太费事了嘛!所以makefile的存在就是“集成编译”一下子编译成一个文件。这样编辑运行起来不就简单太多了莫。废话不多说直接上代码,顺带说一下模块化编程:我先建立一个makefile文件vi...原创 2020-03-30 13:11:07 · 831 阅读 · 1 评论