2014025654《嵌入式系统程序设计》第五周学习总结

1.标准I/O提供缓冲

2.fread()函数

在文件被打开后,可对文件进行读写等操作,其中读操作的函数为fread()

函数原型 size_t fread (voidptr,size_t size,size_t nmemb,FILEstream)

ptr:存放读入记录的缓冲区

size:读取的记录大小

nmemb:读取的记录数

stream:要读取的文件流

函数返回值

成功:返回实际读取的nmemb数目

失败:EOF

3.fwrite()函数

fwrite()函数用于对确定的文件流进行写操作。

函数原型 size_t fwrite (constptr,size_t size,size_t nmemb,FILE*stream)

ptr:存放写入记录的缓冲区

size:写入的记录大小

nmemb:写入的记录数

stream:要写入的文件流

函数返回值

成功:返回实际读取的nmemb数目

失败:EOF

fwrite()和fread()用于读写记录、用于二进制文件的术如何输出。

fwrite()是按二进制写入,所以写入数据所占空间是根据数据类型来确定。

fread()读取文件,可安全用于二进制文件。

4.fork()函数

fork()函数将运行着的程序分成几乎一样的两个进程,

每个进程都启动从代码的同一位置开始执行的线程,这两个进程中的线程继续执行。

fork()返回值

fork函数执行完毕创建新进程成功出现两个进程,一个是子进程,一个是父进程。

在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID

可以通过fork返回的值来判断当前进程是子进程还是父进程。

fork出错的两种原因

(1)当前的进程数已经达到了系统规定的上限,这时errno的值被设置为EAGAIN。
(2)系统内存不足,这时errno的值被设置为ENOMEM。

5.exec()函数

Linux中使用exec()函数有两种情况

当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用任何exec() 函数

一个进程想执行另一个程序,那么它就可以调用fork函数新建一个进程,然后调用任何一个exec()函数

容易执行失败,所以一定要加上错误判断语句。

常见错误:

找不到文件或路径

数组argv和envp没有用NULL结束

没有对应可执行文件的运行权限

execleexecve可以向执行进程传递环境变量,但不会继承Shell进程的环境变量,

exel,execlp,execv,execvp继承Shell进程的所有环境变量。

6.终止程序函数exit()和_exi()函数

exit: void exit(int status)

_exit: void _exit(int status)

exit()和_exit() 函数终止进程,执行操作时,进程停下剩下的操作。但是两个函数略有不同,

_exit()直接终止进程,exit()在终止进程前对目前文件的使用情况进行调查,把文件缓冲区的内容写回文件。

7.waitpid函数

使父进程阻塞,在linux中实现wait()函数调用的就是waitpid()函数。

waitpid函数de参数

pid>0时,只等待进程等于pid的子进程,不收其他进程的影响

pid=-1时,等待任何一个子进程

pid=0时,等待同一个进程组中的任何子进程

pid<-1时,由pid的绝对值绝对进程组

 

posted @ 2017-05-22 21:24  夏薇  阅读(206)  评论(0编辑  收藏  举报