《嵌入式Linux》Linux高级编程

写在前面

由于Linux是开卷考试 所以这部分内容知识整理了书上没有的内容

第六章 文件IO

在这里插入图片描述
在这里插入图片描述
文件I/O函数-打开文件、读文件、写文件等等。大多数UNIX文件I/O只需用到5个函数:open、read、write、lseek 以及close。

● open函数

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char * pathname, int oflag,…
/*, mode_t mode * / ) ;

参数介绍:
①pathname是要打开或创建的文件的名字。
②oflag参数可用来说明此函数的多个选择项。用下列一个或多个常数进行或运算构成of lag参数(这些常数定义在< fcntl.h >头文件中):
●O_RDONLY 只读打开。
●O_WRONLY 只写打开。
●O_RDWR 读、写打开。
●在这三个常数中应当只指定一个。下列常数则是可选择的:
●O_APPEND 每次写时都加到文件的尾端。
●O_CREAT 若此文件不存在则创建它。
●返回值:
●打开成功返回对应文件的描述符;
●失败返回1。

● cerat函数

int creat(const char *pathname,mode_t mode);
以mode方式创建一个以pathname为文件名的文件,返回新的文件句柄fd,错误返回-1及错误代码errno。

● write函数

size_t write(int fd,void *buf, size_t count);
参数介绍:
write第一个参数fd为要写入文件的文件描述符;
第二个参数buf为写的内容的首地址;
第三个count为本次要写入数据的字节个数。
返回值:
调用成功后,返回实际写入数据字节数。

● read函数

size_t read(int fd,void *buf, size_t count);
参数介绍:
●①fd为要读取文件的文件描述符;
●②buf为读取内容存放缓冲区首地址;
●③count为缓冲区最多容纳多少字节数。
●返回值:
●调用成功后,返回实际写入数据字节数。

● sleek函数

off_t lseek(int fd, off_t offset, int whence);
●//成功返回新的文件偏移量,出错返回-1
●参数介绍:
● ①fd:要设置的文件对应文件描述符;
● ②offset:对应解释依靠于参数三;
● ③whence:
● 当whence为SEEK_SET时,则将该文件的偏移量设置为距文件开始处offset个字节;
● 当whence为SEEK_CUR时,则将该文件的偏移量设置为当前值加offset,offset可正可负;

● close函数

int close(int fd);
●关闭fd所指文件,顺利关闭返回0,错误返回-1。

示例:

编写一个文件I/O应用程序filetest,在当前目录下创建用户可读写文件"hello.txt",在其中写入" Hello, file I/O test ",关闭文件,再次打开它,读取其中的内容并打印出来。

在这里插入图片描述

第七章进程

● vfork()函数

功能与fork()函数功能类似不过更加彻底:内核不再给子进程创建虚拟空间,直接让子进程共享父进程的虚拟空间。当父子进程中有更改相应段的行为发生时,再为子进程相应的段创建虚拟空间并分配物理空间。在vfork()函数创建子进程后父进程会阻塞,保证子进程先行运行。
●vfork()函数创建的子进程会与父进程(在调用exec函数族函数或exit()函数前)共用地址空间,此时子进程如果使用变量则会直接修改父进程的变量值。因此,vfork()函数创建的子进程可能会对父进程产生干扰。另外,如果子进程未调用exec函数族函数或exit()函数,则父子进程会出现死锁现象。

●fork()函数与vfork()函数的主要区别如下:
● 1.vfork()函数保证子进程先行运行,在子进程调度exec函数族函数或者exit()函数后父进程才会被调度运行。如果子进程需要依赖父进程的进一步动作,则会产生死锁
●2.fork()函数需要拷贝父进程的进程环境,而vfork()函数则不需要完全拷贝父进程的进程环境,在子进程调用exec函数族函数或者exit()函数之前,子进程与父进程共享进程环境(此时子进程相当于线程),父进程阻塞

第八章 进程间通信

无名管道:

write函数的两种用法
●int write(int handle, void buf, int nbyte);
●像指定的缓冲区传数据,handle是文件描述符,buf指向内存的指针,nbyte为指定的字节数;返回值为-1则出错
●write(const char
str,int n);
read函数
●int read(int handle, void *buf, int nbyte);
●read()会把参数handle所指的文件传送nbyte个字节到buf指针所指的内存中。若参数nbyte为0,则read()不会有作用并返回0。返回值为

有名管道:

在这里插入图片描述

消息队列

在这里插入图片描述
在这里插入图片描述

第九章 线程

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值