- 博客(50)
- 收藏
- 关注
原创 Linux的僵尸进程产生原因及解决方法
今天在做基于madplay的MP3项目的时候遇到了一个问题,就是在停止播放时用 kill( )函数 想要杀死孙进程和子进程,但子进程一直杀不死,导致每次又重新播放歌曲。查阅资料觉得可能时产生了僵尸进程。这个是所谓的zombie(僵尸进程)是指在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待...
2018-08-24 18:43:21
2280
1
原创 基于NanoPi NEO的linux聊天室(一)环境搭建
关于我使用的NanoPi NEO可以去以下网址查看:https://item.taobao.com/item.htm?id=535338278975;http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO/zh买NannoPi NEO时如果带sd卡的话,卡里面应该已经烧好系统了,可以 直接用,不用再自己烧系统到卡里。如果需要自己手...
2018-08-15 12:05:20
1158
转载 C/C++中static关键字作用总结
1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){ pri...
2018-08-10 22:56:04
1583
转载 TCP三次握手和四次挥手过程
1、三次握手(1)三次握手的详述首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已...
2018-08-08 12:15:04
262
原创 C++ STL标准模板库 notes
STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文 件:<algorithm>、<deque>、<functio...
2018-08-08 12:07:05
191
原创 解决Linux大部分命令失效的问题
今天在安装交叉编译环境的时候修改了~/.bashrc的程序,添加了export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin/:$PATH之后,我的Linux所有的命令行都不能用了,都是显示这样的错误 崩溃了,(⊙o⊙)…,纠结了半天原来是‘$PATH’之前的应该写冒号,结果写成分号了!!!(Linux中的环境变量使用冒号分开的,而$P...
2018-08-08 10:59:14
1975
原创 C++编程 多态和纯虚函数的例子
#ifndef _EMPLOYEE_H#define _EMPLOYEE_H#include <iostream>#include <string>using namespace std;class Employee{protected: static int num; int m_id; string m_name; double m_Sal...
2018-08-02 12:55:13
372
原创 C++编程 :继承和派生
继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。以下是两种典型的使用继承...
2018-08-02 12:44:30
608
原创 STM32中文件操作系统FATFS的移植
这里主要介绍一下 STM32中文件操作系统FATFS的移植。1.版本 fatfs0.11a2.下载地址 http://elm-chan.org/fsw/ff/00index_e.html3.将压缩后将文件放入user目录-工程模板选择SPIFLASH例程模板1.在mdk工程界面中新建FatFS目录,添加如下文件:2.魔术棒中 设置头文件包含 fatfs\src 目录...
2018-07-29 09:52:11
10789
3
转载 源码安装ncurses-devel
安装ncurses-devel如果使用yum安装输入下面命令 1 [root@bogon liuzhen]# yum install ncurses-devel yum安装完成后,重新执行cmake,问题不再出现。 注意事项:如mysql安装失败重新编译时,需要清除旧的对象文件和缓存信息。 1 2 3 ...
2018-07-29 09:42:22
13475
原创 C++ 高级编程 运算符重载的两种方法
二元运算符:例如1://通过类成员函数完成-操作符重载//函数声明 Complex operator-(Complex &c2)//函数调用分析//用类成员函数实现-运算符重载 Complex c4 = c1 - c2; c4.printCom(); //c1.operator-(c2);例如2://通过全局函数方法完成+操作符重载//函数声明 Complex op...
2018-07-27 11:01:04
418
原创 c++中的引用
#include <stdio.h>int main(){ int a = 10; int &b = a; // 普通引用 int x = 20; const int& y = x; // 常引用 让变量y拥有只读属性,不能通过y改变x的值 // 常引用 初始化 分为 2中情况 // ...
2018-07-23 16:27:48
138
原创 C与C++中 const 的比较
C语言中的const:int main(){ // C语言中 const修饰的变量是一个 常变量,本质还是变量,有自己的地址空间 const int a = 10; int *p = (int *)&a; *p = 5; printf ("%d\n", a); --->a=5 return 0;} C...
2018-07-19 15:53:30
127
原创 c语言实现输出2的1000次方
//用数组来模拟它的进位#include int main(void) { int a[1000]; //先定义一个足够大的数组 int i,j; for(i=0; i<1000; i++) //先置零 { a[i] = 0; } a[0] = 1
2018-01-29 15:31:59
1224
原创 单链表的建立,把a~z 26个字母插入到链表中,并且倒叙,还要打印
#include #includetypedef struct linklist { char ff; struct linklist *next;}Node; typedef Node* Linklist;int main(){ Linklist L, new; L = (Linklist)malloc(sizeof(Node)); L->next = NULL
2018-01-25 19:47:28
2634
原创 不用库函数,用c语言实现将一整型数字转化为字符串
#include#includeint main(){ int n; char s[100] = {0}; int i = 0, j, flag = 0; char temp; scanf("%d", &n); if(n < 0)//为负数 { n = -n; flag = 1; } if(n == 0)//数字为0 { s[i++] = '0'; }
2018-01-25 19:42:49
1928
原创 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
#includeint main(){ int n, i, temp, count = 0; printf("输入人数:\n"); scanf("%d", &n); int a[n]; temp = n; for(i = 0; i < temp; i++) { a[i] = i+1; } i = 0; while(temp > 1) { if(a[i] != 0
2018-01-25 19:38:12
468
转载 C语言中堆和栈的区别
一.前言:C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如下图所示:1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。2.堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存
2018-01-25 18:40:10
202
原创 聊天室项目
网络编程项目要求一、 实现目标 一个在 Linux 下可以使用的聊天软件,要求至少实现如下功能:1. 采用 Client/Server 架构2. Client A 登陆聊天服务器前,需要注册自己的 ID 和密码3. 注册成功后,Client A 就可以通过自己的 ID 和密码登陆聊天服务器4. 多个 Client X 可以同时登陆聊天服务器之后,与其他用户进行通讯聊天5
2018-01-23 16:03:28
899
原创 Linux网络编程
1.OSI七层协议模型 应用层(Application) 表示层(Presentation) 会话层(Session) 传输层(Transport) TCP/UDP 网络层(Network) 数据链路层(Data Link) 物理层(Physical) 2.网络中进程之间如何通信 网间进程通信要解决的是不同主机进程间的相互通信问题(可把同机进程通信看作是其中的特例)。为
2017-12-07 16:48:43
172
原创 操作系统基础10问
1、简述Linux进程内存空间分为哪几个段?作用分别是什么?数据段、代码段和堆栈段 “数据段”:已被初始化的变量,包括全局变量和已被初始化的静态变量;未初始化数据段,存储未被初始化的静态变量,又称BBS; “代码段”存放的是程序代码的数据; “堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。2、如何查看进程的信息(线程数):1)使用top命令,具体用法是
2017-12-06 22:07:31
159
原创 linux下进程间通信(2)
1.消息队列消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。2.消息队列结构定义struct msqid_ds *msgque[MSGMNI]向量:1msgque[MSGMNI]是一个msqid_ds结构的指针数组,每个msqid_ds结构指针代表一个系统消息队列,msgque[MSGMNI
2017-11-30 15:24:05
205
原创 linux下进程间通信(1)
1.Linux下进程间通信方式有有那些?1)管道( pipe )及有名管道 (named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信2)信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他
2017-11-30 15:19:00
158
原创 C语言---多进程
1.进程的定义标准定义:进程是可并发执行的程序,是在一个数据集合上的运行过程。 通俗来说,硬盘上的一个可执行文件经常被称为程序,在Linux系统中,当一个程序开始执行后,在开始执行到执行完毕退出这段时间里,它在内存中的部分就被称作一个进程。2.进程的分类进程一般分为交互进程、批处理进程和守护进程三类。 守护进程总是活跃的,一般是后台运行。守护进程一般是由系统在开机时
2017-11-23 20:29:29
925
原创 C语言——文件操作
1.Linux下的文件在Linux操作系统中,它对一切资源的管理都是对文件的操作。 在现代操作系统中, 要利用大量的程序和数据,由于内存容量有限,且不能长期保存,于是,人们把这些数据以文件的形式放在外存中,需要的时候再将它们调入内存,从此便有了文件系统。2.Linux目录结构http://blog.csdn.net/Silence_Fall/article/details/62
2017-11-23 20:19:26
198
原创 栈与队列 c语言
1栈的定义,特点 定义:栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 特点:先入后出,后入先出2 栈的注意点首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底。它的特殊之处就在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。这也就使得:栈底是
2017-11-02 22:02:34
202
原创 初识数据结构
1.基本概念线性表(List):由零个或多个数据元素组成的有限序列。 2.注意:1.线性表是一个序列。2.0个元素构成的线性表是空表。3.线性表中的第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继。4.线性表是有长度的,其长度就是元素个数,且线性表的元素个数是有限的,也就是说,线性表的长度是有限的。如果用数学语言来
2017-10-26 19:46:57
140
原创 c语言———预处理,结构体
1.什么是结构体结构体是一种专门设计用来存储不同数据类型元素集合结构体与数组的对比:数组:只能由多个相同类型的数据构成。结构体:可以由多个不同类型的数据构成。2.结构体的定义结构体内部的元素,也就是组成成分,我们一般称为”成员”。结构体的一般定义形式为:struct 结构体名{类型名1 成员名1;类型名2 成员名2;……类型名n
2017-10-26 19:44:54
276
原创 C语言----- 函数
函数:C 源程序由多个函数组成,main函数是主函数,有且只能有一个main函数。它可以调用其他函数,调用结束后返回main函数,最后由main函数结束整个程序。在 C 中函数的定义可以在main函数之前也可以在main函数之后。如果在main函数之后定义,则在main函数之前进行函数的声明。函数的声明 即 你定义函数的第一行,在最后加上一个分号即可; 无参函数定义格式:类
2017-10-19 19:42:07
174
原创 C语言———指针
1.指针的类型与指针所指向的类型的区别从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:(1)int*ptr;//指针的类型是int*(2)char*ptr;//指针的类型是char*(3)int**ptr;//指针的类型是int**
2017-10-19 19:38:12
253
原创 10.13笔记shell和const
Shell:命令解析器 第一行:#!/bin/sh 或 #!/bin/bash 默认变量: #: 传入脚本的命令参数个数#: 传入脚本的命令参数个数 * : 所有命令行的参数值 0:命令本身0 : 命令本身 1 : 第一个命令行参数-ne:不等于 -eq:等于 fi:结束 exit:退出 $?:返回值 -r:判断是不是目录 -f:判断是不是
2017-10-14 14:00:05
308
原创 C语言----语句
1程序的进本结构 顺序,分支,循环2空语句 只有”;”组成的语句被称为空语句。什么也不执行,可用作空循环体。 用途: 延时、方便扩充新功能3表达式语句 表达式加分号表达式;4函数语句调用 函数名、实参加分号函数名(实际参数表);5布尔变量 布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量型的真
2017-10-09 21:26:09
203
原创 C语言----运算符及表达式
1运算符分类算数运算符关系运算符逻辑运算符位操作运算符赋值运算符条件运算符逗号运算符指针运算符求字节运算符特殊运算符2运算符的优先级 运算符的优先级分15等级,1级最高,15级最低。 同一优先级的运算符,运算次序由结合方向所决定!>算术运算符>关系运算符>&&>||>赋值运算符表达式中,优先级高的的先于低的运算,优先级相同的时候,按照运算符的结合性运算。3运算符的结
2017-10-09 21:25:12
350
原创 C语言----数据类型
1数据类型包含的内容: 数据的表示和对数据的加工操作。数据的全部可能表示构成数据类型的值的集合,数据全部合理的操作构成数据类型的操作集合。2数据类型间可以进行强制转换原因: 变量的值是变量所对应的内存区域内存放的二进制序列,变量的值不会因为变量的类型发生改变而改变,当变量转换为对应的类型时,内存区域内的二进制序列以该类型的形式翻译出来。由此可见,变量在内存中存放和它的值没有关系,而是和
2017-10-09 21:20:49
198
原创 Linux系统管理及系统安全命令
系 统 管 理 相 关 命 令 : df top free quota at lp adduser groupadd kill crontab系 统 安 全 相 关 命 令 : passwd su umask chgrp chrnod chown chattr sudo ps who对 于 Linux 系 统 来 说 , 无 论 是 中 央 处 理 器 、 内 存 、 磁 盘 驱
2017-10-08 23:03:26
188
原创 Linux 的文件管理命令
Linux系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。 Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。下面介绍几个常用的文件处理命令:file
2017-10-08 22:50:22
318
原创 GDB 调试器
程序的调试工作在整个程序的开发过程中占据了相当大的比例。使用 gcc 调试 C 程序 时,只能依靠 gcc 发出的警告或错误信息来进行,所以调试的效率非常低。 为此,GNU 开发了 GDB 调试器(GNU Debugger)。GDB 的调试功能非常强大,甚至可以 和 Visual C++、Visual Basic、Jbuilder 等开发工具的调试器相媲美。但 GDB 的缺点是没 有图形调试
2017-10-08 22:34:53
196
原创 编译系统GCC
4.1 GCC 在 Linux 平台上,最流行的编译系统是 GCC(GNU Compile Collection)。GCC 也是 GNU 发布的最著名的软件之一。GCC 的功能非常强大,主要体现在两方面。 1) GCC 可以为 x86、ARM、MIPS 等不同体系结构的硬件平台编译程序。 2) GCC 可以编译 C、C++、Pascal、Java 等数十种高级语言。 GCC 的这两项特性
2017-10-08 22:32:26
341
转载 linux性能监控——CPU、Memory、IO、Network
【操作系统】Linux性能监控——CPU、Memory、IO、Networkby illidan(综合了几篇文章和自己的实践) 一、CPU1、良好状态指标CPU利用率:User Time 上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。可运行队列:每个处理器的可运行队列2、监控工具vmstat$ vmstat
2017-03-28 20:42:02
570
转载 linux下shell脚本学习
在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的:1. 建立一个脚本 Linux中有好多中不同的she
2017-03-28 20:40:10
369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人