目录
[显示]

1.摘要

这篇文章是嵌入式开发学习笔记的第三篇,归纳了Linux常用API的名称和功能,作为开发时速查使用。具体功能需要查阅相关API文档。

2. 文件编程

2.1. 文件访问(系统调用)

create 创建
open 打开
close 关闭
read 读文件
write 写文件
lseek 移动读写指针
    whence 移动基准
        SEEK_SET 文件头
        SEEK_CUR 当前位置
        SEEK_END 文件尾
    offset 偏移
access 判断权限

R_OK 读
W_OK 写
X_OK 执行
F_OK 存在

2.2. 文件访问(库函数)

fopen 打开
fread 读文件
fwrite 写文件
fgetc 读取一个字符
fputc 写入一个字符
fscanf 从流中进行格式化输入
fprintf 格式化输出到流中
fseek 定位

SEEK_SET 开始
SEEK_CUR 当前
SEEK_END 结尾

getcwd 获取路径
mkdir 创建目录

3. 时间编程

time 获取日历时间
gmtime 日历时间转为格林威治时间
localtime 将日历时间转为本地时间
asctime 将tm时间转为字符串
ctime 将日历时间转化为本地时间字符串
gettimeofday 今日零时到现在的时间差
sleep 睡眠x秒
usleep 睡眠x微秒

4. 进程

fork 创建进程
共享代码段
执行次序不确定
vfork 创建进程
共享代码和数据段
子进程先运行
exec 启动新程序替换原有进程,pid不变
execl
execlp 从path中查找程序
execv 参数数组
system 调用fork,执行command
wait 阻塞进程

5. 进程通讯(ipc)

5.1. 管道(pipe)和有名管道(fifo)

pipe
mkfifo

5.2. 信号(signal)

kill 可用于本身和其他进程
raise 本身
alarm 经过x秒后产生sigalrm信号
pause 进程挂起知道捕捉到一个信号
signal 注册处理函数

5.3. 消息队列

ftok 文件名转换为键值
msgget 打开队列(反回描述字)

参数
ipc_create
ipc_excl(存在则报错)
ipc_nowait无法取数据时不阻塞
key-ipc_private

msgsnd 发送消息
msgrcv 取消息

5.4. 共享内存

shmget 创建共享内存
shmat 映射共享内存

0-系统指定地址

shmdt 解除映射

5.5. 信号量

semget 创建
semop 控制信号量

5.6. 套接字(socket)

6. 多线程 

编译 gcc加参数-lpthread
pthread_create 创建线程
pthread_exit 退出线程
pthread_join 阻塞调用线程,直到指定的线程终止
pthread_self 获得当前线程id
pthread_cleanup_push
pthread_cleanup_pop 线程异常退出时执行push参数

7. 网络编程

7.1. 数据包

以太网包 

mac地址

IP包 无连接的传输服务

数据传送
寻址
路由选择
数据报文分段

TCP包

端口号
序号

UDP包

端口号

7.2. socket

7.2.1. socket类型

流式套接字(SOCK_STREAM)TCP协议
数据报套接字(SOCK_DGRAM) UDP协议
原始套接字(SOCK_RAW)IP协议

7.2.2. socket地址

socketaddr
sa_family
sa_data
socketaddr_in
sin_family
sin_port
sin_addr
sin_zero

ip到32位整数转换 a=ascii,n=network

inet_aton
inet_ntoa

字节顺序 big-endian

htons
htonl
ntohs
ntohl

主机名转换

gethostbyname

7.2.3. socket编程

socket
创建套接字
bind
绑定ip地址和端口号到socket
connect
连接到服务器
listen
设置服务器能处理的最大连接数
accept
等待客户端的socket请求
send
发送数据
receive
接收数据

7.2.4. TCP编程

7.2.4.1. 服务器

  1. 创建socket
  2. 绑定ip地址bind
  3. 设置最大连接数(listen)
  4. 等待客户端请求accept
  5. 收发数据(send、recv)
  6. 关闭

7.2.4.2. 客户端

  1. 创建socket
  2. 设置连接服务器的ip地址和端口
  3. 连接服务器connect
  4. 收发数据
  5. 关闭

7.2.5. UDP编程

7.2.4.1. 服务器

  1. 创建socket
  2. 绑定ip地址
  3. 接收数据recvfrom
  4. 关闭

7.2.4.2. 客户端

  1. 创建socket
  2. 绑定IP地址
  3. 设置对方ip地址和端口
  4. 发送数据sendto
  5. 关闭

7.2.6. 服务器模型

循环服务器
并发服务器

fork
多线程
IO复用