Linux c语言高级

一周时间转瞬即逝,在这一周的学习中,我深入探索了Linux C语言的高级特性和用法。以下是我对所学知识的总结:

一,认识嵌入式操作系统

学些Linux C语言时我首先了解嵌入式操作系统分类,应用领域,UNIX的起源,使用及认识shell编程,理解之后对我后续学习帮助很多。

1.什么是操作系统 

 操作系统是管理和控制计算机硬件与软件资源的计算机程序,它是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

2.操作系统分类

(1).批处理操作系统

 (2).分时操作系统

 (3).实时操作系统

 (4).嵌入式操作系统

 (5).个人计算机操作系统

 (6).网络操作系统

 (7).分布式操作系统

3.嵌入式系统应用领域

(1).工业控制

(2).智能家具领域

(3).安防领域

(4).汽车电子领域

(5).交通物流领域

(6).健康医疗领域等

二,Linux 操作系统使用

学习Linux时,认识shell编程,各种命令,常用的特殊符号,环境变量,掌握这些命令来编辑,编译,执行所写的代码。

1.shell命令格式

命令名称   【选项】  【参数】

<1>.一条命令三要素之间必须要有空格隔开

<2>.若多个命令在一行书写,用分号(;)将各命令隔开

<3>.如果一条命令不能在一行写完,在行尾使用反斜杠()标明该条命令未结束

2.系统管理命令

ps:显示当前系统中由该用户运行的进程列表

ps-ef:查看所有进程及其PID,系统时间,命令详细目录,执行者

ps-w:加宽以显示较多信息

ps aux:除可显示-ef所有内容之外,还可显示CPU及内存占用率,进程状态

top:动态显示系统中运行的程序 (一般为每隔几秒刷新一次)

pstree:以树的形式显示进程

kill:输出特定的信号个PID

clear:清除屏幕信息

shutdown-h now:现在立即关机

shutdown -h  +30 :半小时后关机

reboot :重启

shutdown -r  now:重启

3.磁盘相关命令

free:查看当前系统内存的使用情况

df:查看文件的磁盘占用情况

du:统计目录所占磁盘大小

fdisk 查看磁盘分区情况及对磁盘进行分区管理

fdisk -l 显示文件系统的分区情况

<1>.使用fdisk必须拥有root权限

<2>.IDE磁盘hda,hdb......,SCSI硬盘是对应sda,sdb......hda1,第一个硬盘分区

fdisk 查看磁盘分区情况及对磁盘进行分区管理

fdisk -l 显示文件系统的分区情况

<1>.使用fdisk必须拥有root权限

<2>.IDE磁盘hda,hdb......,SCSI硬盘是对应sda,sdb......hda1,第一个硬盘分区

4.文件,目录相关命令

cd  mkdir  cat  cp  mv  rm  vim 

chmod:改变文件的访问权限

chown:修改文件的所有者与组别

chgre:改变文件的所有权

cat:查看比较短的文档

more:查看较长的文档

less是more的增强版

grep:搜索特定字符,并输出含有行

|  关联

5.常用特殊符号

<1>.重定向符号 > 文件不存在,则新建,文件存在,覆盖原文件中的内容

<2>.追加重定向符号 >> 文件不存在则新建,文件存在,则追加在文件的末尾

<3>.反引号 ``

<4>.通配符

6.压缩打包命令

gzip:压缩

bzip2

tar:对文件目录进行打包和解包

diff:文件比较命令

5.Linux环境变量

env:显示所有的环境变量

PATH:临时修改

ifconfig:查看ip地址

三,Linux用户管理

学习了用户的属性,相关配置,shell编程的运用,各种变量程序和语句的,掌握使用这些语句来编写程序来实现

1.管理命令

创建用户:adduser

修改密码:passwd

增加组:groupadd

修改用户属性:usermod

删除用户:deluser

删除组:groupdl

2.shell编程

用户自定义变量

预定义变量

$#包含命令参数的个数

$@包含所有命令行参数

$*包含所有命令行参数

$$包含一个正在执行的进程号

$?包含前一个命令退出的状态

3.shell程序和语句

#!/bin/bash

expr:算术运算命令

test:测试字符串与整数

-eq  测试是否相等

-ne 测试是否不相等

-gt   测试是否大于

-ge  测试是否大于等于

-lt   测试是否小于

-le  测试是否小于等于

文件属性

-d 测试是否为一个目录

-f 测试是否为普通文件

-l 测试是否为符号链接

-r 测试是否存在可读

-w 测试是否存在可写

-x 测试是否存在可执行

3.结构性语句

1.顺序

read 输入

echo 输出

2.选择

单分支

if [ 条件为真 ]
then
      语句
fi

双分支

if [条件为真]

then

 语句1

else

 语句2

fi

多分支

if [条件1为真]

then

 语句1

elif [条件2为真]

then

   语句2

elif [条件3为真]

then

 语句3
.....

else

 语句n+1

fi
case 字符串变量  in

        # 1|3|5|7

 模式1|模式11|模式12)
 语句1
 ;;      #---->break

 模式2)
 语句2
 ;;
 模式3)
 语句3
 ;;
 ....
 
 

3.循环 

1.for 

<1>.带列表的for

 模式n) 
 语句n
 ;;
   *)
   语句n+1

   ;;

esac
while [条件为真]

do

 语句

done

四,函数与结构体

学习如何定义函数,创建结构体,操作结构体的指针,在堆区分配空间和释放空间,堆区与结构体空间关联起来

1.函数的定义

函数名()                                             function  函数名()

{                                                              {

         函数体                                                           函数体

  }                                                               }

2.函数调用

变量名=·函数名  参数一  参数二

3.结构体

如何创建结构体数据类型

//定义结构体语句

struct  结构体名字

{
    属性1;
    属性2;
    属性3;
   .......
};

·创建结构体变量

#include <stdio.h>

//定义一个学生的结构体数据类型

struct student

{
        char name[20];
        int height;
        float scores[3];
};

//定义一个结构体数据类型,该名字叫struct student

int main(void)
{
        //类型名 变量名;

        //定义一个结构体变量并进行初始化

        struct student s1={"lisi",183,{90,89,78}};
        return 0;
}

如何访问变量的值

如何操作结构体指针

//定义一个指向int的指针

int * pi=NULL;        //sizeof(pi)=8 pi+1 sizeof(int)
//定义一个指向结构体(struct student)的指针

struct student * ps=NULL;  //sizeof(ps)=8 ps+1 (struct student)

4.内存管理

分配空间

#include <stdlib.h>

//参数:你要分配空间的大小

//返回值:void *     void (表示空)   void * (任何数据类型的地址)
//分配成功返回空间的首地址,失败则返回NULL
//malloc分配的空间未进行清空

void *malloc(size_t size);  

释放空间

#include <stdlib.h>

//参数1:释放空间的首地址

void free(void *ptr);

五.自定义头文件与函数指针

学习Linux其中自定义,分阶段执行过程,make工程管理器和变量,定义函数指针,储存类型等各类结构体

1.自定义头文件要求

引入头文件

宏定义

结构体类型的定义

枚举类型的定义

函数声明

2.如何引入自定义头文件

#include "stu"

3.""与<>的区别

"":编译器从用户的工作路径开始搜索文件

<>:编译器从标准库路径开始搜索文件

4.条件编译

作用:避开头文件被重复引入

5.make工程管理器

make工作原理:默认在当前路径下查找一个makefile文件

6.makefile

自动变量

$@:目标文件

$^:所有的依赖文件

$<:第一个依赖文件

预定义变量

CC:c编译器的名称,默认为cc

CFLAGS:c编译器选成,无默认值

RM:文件删除程序的名称,默认值为rm -f

7.函数指针

如何定义函数指针

int (*pfun)(int,int)

函数参数也可以是函数指针

函数指针也可以取别名(typeddef)

typedef int (*PFUN)(int,int)

8.存储类型

register 寄存器

exterrn 外部的

局部变量:定义在函数体内部的变量

全局变量:定义在函数体外不的变量

extern:修饰全局变量

external:修饰函数

static:静态的(隐藏)

9.共用体

struct student
{
char name[20];
int height;
};

10.大小端

小端序:低字节存在低地址处

大端序:低字节存在高地址处

11.枚举

//1.定义一个枚举的数据类型

enum timeDate

{
    MONDAY=1,TUESDAY,WEDSDAY,THURSDAY,FRIDAY  //默认是从开始的整数

};

12.位域

typedef struct mydate

{
 unsigned int year:11;  //int的11位:

 unsigned int month:4;
 unsigned int day:5;
}Date; //缺点:不能通过scanf()输入

总的来说

通过这一周的学习,我对Linux C高级语言的掌握程度有了显著提高。我在其中遇到了一些挑战,但通过不断练习和探索,我逐渐克服了困难,并加深了对这门语言的理解。我将继续努力学习,巩固所学知识,并致力于提升我的编程技能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值