
课堂笔记
文章平均质量分 56
Julia_Jiang
努力努力再努力!
展开
-
Linux操作系统下的相关命令
课堂笔记1.[root@localhost ~]# “#”——代表管理员用户; “$”——代表普通用户; “~”——代表当前用户。2.切换用户的命令:su+空格+用户名 例子:su -root 切换至管理员用户 su -julia 切换至用户名为Julia的用户3.添加用户的命令:adduser+空格+用户名 例子:adduser kk原创 2016-10-25 23:43:49 · 523 阅读 · 0 评论 -
Linux的文件函数
1.creat: (1)函数的作用:建立,创建新文件。 (2)函数的原型:int creat (const char * pathname,mode_t mode) (3)函数的参数:pathname:要建立的文件路径字符串。如:“/home/hello.c”。 mode:建立文件的权限。 (4)函数的返回值:成功返回文原创 2016-12-04 22:16:11 · 770 阅读 · 0 评论 -
Linux文件编程
1.系统调用:所谓系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务。为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用原创 2016-12-05 22:56:41 · 396 阅读 · 0 评论 -
函数指针与函数指针数组
函数指针与函数指针数组有什么区别呢?让我们从下面的两个例子中看看其二者之间的区别吧 eg1:#include <stdio.h>int func(int num){ printf("num = %d \n", num);}int func2(int *(p_func)(int)){ p_func(5);}int main(){ int (*p_func)(in原创 2016-11-25 16:17:49 · 413 阅读 · 0 评论 -
结构体与共用体
结构体的作用: 在网络协议、通信控制、嵌入式系统的c/c++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合在一起的一个整体。其表现形式是一个结构体。简单来说,结构体就是用来封装数据的。 结构体的定义:struct student{ int num; char name[20]; char sex; int age; floa原创 2016-11-25 16:39:30 · 675 阅读 · 0 评论 -
大端小端
小端CPU:高字节保存在高地址,低字节保存在低地址。int num = 0x12345678(12是高字节,78是低字节)大端CPU:低字节保存在高地址,高字节保存在低地址。int num = 0x12345678英特尔、arm都是小端。如何判断机器的大小端?#include <stdio.h>union node{ int num; char ch;};void big_sma原创 2016-11-25 20:36:52 · 344 阅读 · 0 评论 -
宏定义与条件编译
宏定义:宏定义了一个代表特定内容的标识符。预处理过程会把源代码中出现的宏标识符替换成宏定义时的值。宏最常见的用法是定义代表某个值的全局符号。宏的第二种用 法是定义带参数的宏(宏函数),这样的宏可以象函数一样被调用,但它是在调用语句处展开宏,并用调用时的实际参数来代替定义中的形式参数。像这样#define MAX(a,b) a> b?a:b 就是定义了一个宏函数。宏函数与自原创 2016-11-26 22:11:04 · 1038 阅读 · 0 评论 -
共享内存
1.共享内存是被多个进程共享的一部分物理内存.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻2.看到其中的内容。共享内存实现分为两个步骤:(1)创建共享、打开共享内存,使用shmget函数。(2)映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。 (3)分离共享内存。 (4)控原创 2017-01-17 23:43:00 · 423 阅读 · 0 评论 -
进程间的信号通信
1.信号通信:信号(signal)机制是Unix系统中最为古老的进程间通信机制,很多条件可以产生一个信号:(1)当用户按某些按键时,产生信号。 (2)硬件异常产生信号:除数为0,无效的存储访问等等。这些情况通常由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存储区的进程产生一个SIGSEGV信号。 (3)进程用kill函数将信原创 2017-01-18 18:32:35 · 489 阅读 · 0 评论 -
函数调用
函数调用的步骤:1、通过函数名找到函数入口地址。函数名是一个指针常量,保存的是函数的地址。 2、给形参分配空间。 3、传值:把实参变量对应的内存空间的值传递给形参变量的对应空间。 4、执行函数体语句。 5、函数返回并释放内存空间。什么时候传值,什么时候传址?当只读(只使用不修改)实参变量对应内存空间的值时,传实参变量名; 当写(即使用也修改)实参变量对应内存空间的值时,传实参变量对应空间的原创 2016-11-19 23:05:45 · 619 阅读 · 0 评论 -
如何避免野指针?
何为野指针?野指针就是,没有被初始化的指针,会由系统默认一个随机地址的指针。如果不小心使用的野指针,易造成内存泄漏的段错误。给我们的程序造成一定的破坏。那么,我们该如何避免野指针呢?首先,我们该养成一些良好的编程习惯。1、当指针没有指向的地址空间是,初始化为空。这样可以引起程序员调试时的注意程度。2、当往指针指向的空间赋值时,一定要检查是否有给这个指针分配空间。如果没有,就用malloc函数进行分配原创 2016-11-13 21:41:37 · 1110 阅读 · 0 评论 -
初识嵌入式
题外话:刚刚接触嵌入式开发不过四天,对于相关概念理解依旧不是很透彻。在此,通过整理课堂笔记,并附上自己浅薄的理解,还希望各路大神能不吝赐教!一、嵌入式开发系统的概述1、什么是嵌入式开发?百度百科上对于嵌入式开发的解释:嵌入式开发就是在嵌入式系统下进行的开发,一般的操作系统有winCE,LINUX,Android等等。对于嵌入式系统的解释引用了IEEE对嵌入式系统的定义:“用于控原创 2016-10-26 16:29:59 · 749 阅读 · 0 评论 -
运算符
算术运算符:用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(- -)关系运算符:用于比较运算,包括大于(>)、小于(=)、小于等于(逻辑运算符: 用于逻辑运算,包括与(&&)、或(||)、非(!)||和&&是我们经常用到的逻辑运算符,与按位运算符|和&是两码事。位操作运算符:参与运算的量,按二进制原创 2016-11-07 20:34:00 · 378 阅读 · 0 评论 -
格式化输入(scanf)输出(printf)函数
格式化输出函数printf与格式化输入函数scanf是我们经常需要使用的函数,用来输出和输入的。 下面的例子,用来实现从键盘获取不同类型的数据并输出。#include <stdio.h>#include <stdlib.h>int main(){ int i; int j = 0; int num; char ch; long l_num; flo原创 2016-11-09 23:39:37 · 2090 阅读 · 2 评论 -
嵌入式Linux开发工具之gcc编译器
gcc的简介编译器gcc所具备的优点1、GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、和Ada等多种语言,而且gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译.2、那原创 2016-10-29 22:56:01 · 1489 阅读 · 0 评论 -
变量
变量的三大特点: 变量的数据类型:主要说明变量占用内存空间的大小,如int型。 变量的作用域:变量的有效性的范围,即:变量的使用范围。 变量的存储类型:变量在内存中的存储方式。不同的存储方式,,影响变量在内存中的生存周期。声明与定义: 定义: 创建一个变量,为其分配内存空间,并为它取名字(变量名),一个变量只能定义一次; 声明: 告知编译器,这个名字(变量名)已经匹配在一块内存上了,但是并原创 2016-11-11 00:12:24 · 575 阅读 · 0 评论 -
嵌入式Linux开发工具之调试器gdb
调试器gdb的简介gdb是GNU发布的一款功能很强大的程序调试工具,它只能在Linux平台下使用。gdb主要完成下面三个方面的功能:启动被调试程序。让被调试的程序在指定的位置停住。当程序被停住时,可以检查程序状态-变量值。调试器gdb的使用下面就以test.c 为例,介绍调试器gdb的一些简单用法:#include <stdio.h>int func2(int b){ int re原创 2016-10-30 22:39:16 · 722 阅读 · 0 评论 -
嵌入式开发为什么选择C语言?
众所周知,C语言在嵌入式开发中占有十分重要的地位,它们的关系非比寻常。那么为什么嵌入式开发会选择C语言,而不是其他语言呢?嵌入式开发是在操作系统内部做开发的,操作系统所有的内核几乎都是C语言编写,如果我们也使用C语言做开发,必定会具备一定的优势。再者,C语言相较其他的高级编程语言,其所有的特点对于嵌入式开发软件是再合适不过的了。C语言的特点如下:C语言具有出色的可移植性,能在多种不同体系结构的软/原创 2016-10-31 22:10:48 · 4156 阅读 · 0 评论 -
变量存储区域的划分
计算机主要由CPU、硬盘和内存组成。而每一个程序在执行时就会产生一个进程,在Linux中,每一个进程都会有一个4G的虚拟地址空间。(以32位系统为例,Linux系统中每个进程共有3GB的用户地址空间,当用户调用系统调用时,内核线程会代表进程运行,此时是在内核空间内运行的,故所有进程共享1GB的内核空间. 所以,总的来说,每个进程可用的地址空间共有4GB)这一点对于嵌入式开发十分重要,因为在目前的计算原创 2016-11-15 23:11:50 · 2285 阅读 · 0 评论 -
信号量
1.信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源。进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。信号量是用来解决进程之间的同步与互斥问题的一种进程之间通信机制,包括一个称为信号量的变量和在该信号量下等待资源的进程等待队列,以及对信号量进行的两个原子操作(PV操作)。其中信号量对应于某一种资源,取一个非负的整型值。信号原创 2017-01-19 20:02:53 · 626 阅读 · 0 评论