linux系统编程复习基本框架待填充Word文档格式.docx

上传人:b****6 文档编号:22130582 上传时间:2023-02-02 格式:DOCX 页数:18 大小:89.80KB
下载 相关 举报
linux系统编程复习基本框架待填充Word文档格式.docx_第1页
第1页 / 共18页
linux系统编程复习基本框架待填充Word文档格式.docx_第2页
第2页 / 共18页
linux系统编程复习基本框架待填充Word文档格式.docx_第3页
第3页 / 共18页
linux系统编程复习基本框架待填充Word文档格式.docx_第4页
第4页 / 共18页
linux系统编程复习基本框架待填充Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

linux系统编程复习基本框架待填充Word文档格式.docx

《linux系统编程复习基本框架待填充Word文档格式.docx》由会员分享,可在线阅读,更多相关《linux系统编程复习基本框架待填充Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

linux系统编程复习基本框架待填充Word文档格式.docx

系统调用3:

函数库调用

5.errno与perror

四、第二单元linux下C语言开发工具

1.vim工作模式及转换

三种工作模式及转换

2.gcc工作过程及常用方法:

预处理、编译、汇编、连接

连接关键

3.makefile

作用:

通过make命令调用makefile文件,通过makefile文件描述源程序之间的相互依赖关系,并自动维护编译工作

内容

编写简单的

make默认执行第一条规则

伪目标

OBJ1=S1

$(OBJ1)

1)显示规则

2)$@$^

4.库的概念

库函数,由系统提供的,供程序员开发时调用的,完成特定功能的函数。

编译执行

静态.a加入到可执行文件可执行文件

共享.so独立于可执行文件可执行文件+库

五、第三单元linux进程存储管理

1.程序的结构:

代码区、数据区、未初始化数据区BSS

2.进程的结构:

代码区、数据区、未初始化数据区BSS、堆、栈

3.环境变量

1)查看,增加,修改,删除

2)命令方式

(1)查看变量

A.Set列出所有环境变量

B.Echo$变量名列出指定环境变量

(2)增加或修改export变量名=变量值(=两边无空格)

(3)删除unset变量名

名=值

临时修改

永久修改:

写文件

所有用户识别/etc/profile

某一个用户识别~/.bash_profile

3)函数方式

函数方式只需知道是干什么用的,或者说到功能知道用哪个函数

(1)查看变量:

Lgetenv(“名”)

(2)删除变量:

unsetenv

(3)增加或修改setenvputenv

4.时间管理

1)时间表示方法

(1)time_t

从1970年1月1日午夜开始计数的秒数值,与系统直接进行交互的类型

(2)结构体structtm

将UTC时间根据当前设计的时区进行分解

(3)字符串

2)时间转换

3)时间函数

时间的三种表示方法

转换:

三个函数

time_tt1;

t1=time();

printf(“%s”,ctime(&

t1));

structtm*p1=localtime(&

t1)

六、第四单元linux文件及目录管理

1.理解ANSIC与POSIX文件I/O区别

2.ANSIC缓冲区,缓冲区类型

全缓冲:

缓冲区满、进程正常结束、手动调用刷新函数

行缓冲:

终端I/O

无缓冲:

标准错误

3.文件描述符

 

0标准输入

1标准输出、2标准错误输出

得到文件描述符:

open、pipe、socet、accept

4.POSIX文件I/O

1)openclosereadwritelseek

2)sync/fsync/fdatasync不需要编程,只需要知道概念和区别

sync是将内核缓冲区中所有的内容刷新到磁盘上

fsync是将内核缓冲区和某个文件有关的内容刷新到磁盘上

fdatasync是将内核缓冲区和某个文件有关的数据内容刷新到磁盘上

5.目录文件基本操作

1)opendirclosedirreaddirchdir(chdir不做考核)

七、第五单元文件属性管理

1.linux文件系统管理

虚拟文件系统的作用

2.linux系统下文件类型及属性

1)linux文件类型及权限,16bit

2)类型种类及判断

3)理解setuid、setgid、sticky

4)文件访问权限判断

3.linux文件属性管理

1)修改文件权限操作

2)修改系统umask值——理解umask作用

3)修改文件的拥有者及组

4)用户名/组名与UID/GID的转换

5)硬连接文件与符号连接文件——掌握区别必考

八、第六单元linux进程管理与程序开发

1.基本概念

1)基本属性:

各种id的意义和相关函数

2)用户属性:

四种用户相关id的意义和函数

2.进程控制

1)fork/vfork

vfork中知道为什么不知道vfork就可以

2)exec

3)wait/waitpid

4)exit/_exit

_exit知道和exit的区别就可以

3.特殊进程

1)孤儿进程

2)僵死进程

九、第七单元linux多线程编程

1.线程与进程的区别、选择

2.线程函数

1)创建pthread_create,等待pthread_join

2)退出pthread_exit,取消pthread_cancel

获取id,pthread_self

这几个知道是哪个就可以

一十、第八单元进程间通信

1.进程间通信方式(6种)

2.管道

1)连接一个进程的输出至另一个进程的输入的一种方法

2)单向,无名(进程本身或亲缘进程)、有名(FIFO无关进程)

3)掌握无名管道父子进程操作

3.信号

1)用于通知接收进程有某种事件发生

2)处理方法

3)signal(信号值,处理方法)

kill

4.信号量

1)一个计数器,用来记录对某个资源的使用情况

5.共享内存

1)允许多个进程访问同一块内存空间

6.消息队列

1)消息的链表,链表中每个节点包括消息类型和正文两部分

一十一、第九单元linux网络编程

1.肯定不考编程

2.常用命令和配置文件

1)常用命令

(1)查看IP/子网掩码:

ifconfig

(2)网关:

route–n

(3)测试主机:

ping<

IP>

(4)查看主机名:

hostname

2)配置文件(不用记)

(1)主机名

(2)IP/掩码/网关

(3)DNS

3.OSI七层、TCP/IP四层协议

OSI七层协议:

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP四层协议:

网络接口层、网络层、传输层、应用层

4.IP和端口代表意义

5.理解数据包封包和拆包过程

6.cs、bs,字节顺序,面向连接/无连接

1)C/S客户端/服务器

(1)优点:

发挥客户端PC处理能力,客户端处理工作后提交给服务器,客户端响应较快

(2)缺点

A.客户端需安装专用软件,软件安装、升级、维护的工作量大

B.不同的操作系统很难运行同一款客户端软件

2)B/S浏览器/服务器

客户机软件只需浏览器,只需实现简单事物逻辑

(2)缺点:

客户端功能简单,绝大部分工作由服务器承担,负担重,数据查询慢,不适合大数据量分析,实时控制等

3)字节顺序

主机字节顺序:

网络字节顺序:

低高高低大端

主机和网络之间的转换

4)面向连接/无连接

7.套接字类型

1)流式套接字基于TCP协议,面向连接,可靠

2)数据报套接字基于UDP协议,无连接,不可靠

3)原始套接字超级用户使用,对网络下层通信协议进行访问

8.TCP套接字通信过程图

9.UDP套接字通信过程图

1fork创建子进程,返回值的意义。

2子进程对父进程空间采用写时复制copyonwrite技术进行拷贝。

什么是写时复制技术?

3编程:

父进程输出hello,子进程输出world。

1线程与进程的关系,以及如何选择

一个进程至少包括一个线程

进程拥有资源,线程使用资源

同一个进程内多个线程共享进程资源

稳定---多进程

通信方便,时空开销小---多线程

2线程的创建pthread_create

void*f(void*arg)

{

//线程执行的函数

}

main()

pthread_ttid;

pthread_create(&

tid,NULL,f,NULL);

3等待某个线程结束。

取消其他线程,获取线程tid,

线程退出

pthread_join

pthread_cacel

pthread_self

pthread_exitexit

1Linux支持的进程间通信方式6

信号管道IPC(消息队列,信号量,共享内存)socket

单向,占用内存空间,独立的文件系统

2无名管道创建以及参数代表的意义

intpipe(intpfd[2])

pfd[0]--读

pfd[1]写

3父子进程使用无名管道进行通信的过程

父进程创建管道

创建子进程

子进程共用一个管道

关闭不用的管道描述符

intpfd[2],num;

charbuf[20];

pid_tid;

pipe(pfd)

id=fork();

if(id==-1)perror("

fork"

);

elseif(id==0){//关闭不用的描述符然后进行读或写

close(pfd[1]);

num=read(pfd[0],buf,sizeof(buf))

write(1,buf,num);

close(pfd[0]);

}

else{//关闭不用的描述符然后进行读或写

write(pfd[1],"

hello"

5);

4dup/dup2功能以及区别

将一个文件描述符(新)复制一个现有的文件描述符(旧)上,指向现有的打开文件表项

dup新--最小可用文件描述符

dup2新--通过参数指定,若已经占用,则自动关闭重新使用

dup(旧)

dup2(旧,新)

5实现输入重定向,将标准输入改成文件/home/t1

intfd=open("

/home/t1"

O_RDWR);

dup2(fd,0);

dup2(fd,1);

1OSI参考模型七层,TCP/IP四层

应用层表示会话传输层网络层数据链路物理

应用传输网络网络接口

2IP地址和端口作用

标识主机

表示主机上应用程序

协议IP端口----三元组

协议本地IP本地端口目标IP目标端口

---五元组

3字节顺序分类意义

大于一个字节的数据类型在网络上传输涉及到字节顺序问题。

little小端低字节低地址高字节高地址

big大端低高高低

小大

htonl(32位)htons(16位)

ntohlntohs

IP地址32

端口16

字符串

4套接字类型

流式传输层TCP

数据报传输层UDP

原始IP协议只能root使用

5CSBS意义区别

客户端服务器----客户端处理

浏览器服务器----服务器处理

函数返回值代表错误并且函数置相应的错误代码的时候使用

man2open

returnvalue

seterrno

perror(自定义字符串);

perror("

open"

s1.c----s1

c1.c----c1

makeclean

OBJ1=s1

all:

$(OBJ1)c1

$(OBJ1):

$(OBJ1).c

gcc-o$@$^

c1:

c1.c

clean:

rm-f$(OBJ1)c1

编译错误:

gcc提示,附近,先找第一条错

undeclared变量没声明:

写错,没声明

unreference'

字符串'

函数没定义:

写错,没实现,函数库没加

-lpthread

运行错误:

段错误

GDB

打印调试:

在程序中分布写几条printf,带\n

libc.so

libpthread.so

编译执行

静态.a加入到可执行文件可执行文件

共享.so独立于。

+库

数据段:

已经初始化全局静态

BSS:

未初始化全局静态

栈:

函数局部变量

堆:

动态内存mallocfree

intd;

inte=3;

intmain()

inta;

intb=3;

char*c=malloc(10);

staticintf;

set---所有变量

echo$名

unset名

写入文件

getenv("

名"

setenv(“名”,"

值"

?

?

putenv(“名=值”)

unsetenv("

time_t---197011000秒数

structtm---分开保存

字符串——固定格式TueDec12:

3:

42010

printf("

%s"

ctime(&

t1);

得到文件描述符

openpipesocketaccept

ls-l文件类型符号

-

d

c

b

p

l

s

s1-->

f1

stat第一个参数是文件名

fstat第一个参数是文件描述符

获取s1属性时,得到的是f1

-----------------

lstat

获取s1属性时,得到的是s1

修改权限

chmod/fchmod/lchmod

修改用户/组

chown/fchown/lchown

影响新建文件/目录的权限

0033

命令--------

目录:

777&

屏蔽字反码

000101100

反111010011

111111111

-----------------------

111010011

744

文件:

666&

函数--------

fopenopenmkfifo

参数中权限项&

uid---用户名

getpwuid

gid---组名

getgrgid

获取本身getpid

父进程getppid

进程组getpgid

会话getsid

整数----名SIG*

kill(pid,sig)

alarm(3);

非阻塞

sleep(3);

阻塞,结束:

时间到,收到信号

执行系统默认动作

捕捉

忽略

signal(信号值,处理方法)

SIG_IGN

SIG_DFL

函数名(参数int返回值void*)

主机字节顺序

网络字节顺序big

htonlhtons

实现"

cpf1f2"

功能

执行"

openreadwriteclose

main(intargc,char*argv[])

char*cmd[3];

cmd[0]="

ls"

;

cmd[1]="

-a"

cmd[2]=NULL;

pid=fork();

pid<

0error;

pid>

0wait(NULL);

pid==0execvp(cmd[0],cmd);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1