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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2014025660《嵌入式系统程序设计》第五周学习总结相关的知识,希望对你有一定的参考价值。

本周的实验有以下两个:

write和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。

返回值:读或写的记录数,成功时返回的记录数等于nmemb,出错或读到文件末尾时返回的记录

数小于nmemb,也可能返回0。

fread和fwrite用于读写记录,这里的记录是指一串固定长度的字节,比如一个int、一个结构体或者一个定长数组。参数size指出一条记录的长度,而nmemb指出要读或写多少条记录,这些记录在ptr所指的内存空间中连续存放,共占size * nmemb个字节,fread从文件stream中读出size * nmemb个字节保存到ptr中,而fwrite把ptr中的size * nmemb个字节写到文件stream中。

nmemb是请求读或写的记录数,fread和fwrite返回的记录数有可能小于nmemb指定的记录数。例如当前读写位置距文件末尾只有一条记录的长度,调用fread时指定nmemb为2,则返回值为1。如果当前读写位置已经在文件末尾了,或者读文件时出错了,则fread返回0。如果写文件时出错了,则fwrite的返回值小于nmemb指定的值。下面的例子由两个程序组成,一个程序把结构体保存到文件中,另一个程序和从文件中读出结构体
 Linux下头文件:include

函数定义

int execl(const char path, const char arg, ...);

函数说明

execl()其中后缀"l"代表list也就是参数列表的意思,第一参数path字符指针所指向要执行的文件路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... 最后一个参数须用空指针NULL作结束。

函数返回值

成功则不返回值, 失败返回-1, 失败原因存于errno中,可通过perror()打印

exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束

  return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值..

  exit(1)表示进程正常退出. 返回 1;

  exit(0)表示进程非正常退出. 返回 0.

  进程环境与进程控制(1): 进程的开始与终止

  1. 进程的开始:

  C程序是从main函数开始执行, 原型如下:

  int main(int argc, char *argv[]);

  通常main的返回值是int型, 正确返回0.

  如果main的返回值为void或者无, 某些编译器会给出警告, 此时main的返回值通常是0.

进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。

参数status用来保存被收集进程退出时的一些状态,它是一个指向int类型的指针。但如果我们对这个子进程是如何死掉的毫不在意,只想把这个僵尸进程消灭掉,(事实上绝大多数情况下,我们都会这样想),我们就可以设定这个参数为NULL,就象下面这样:

pid = wait(NULL);

如果成功,wait会返回被收集的子进程的进程ID,如果调用进程没有子进程,调用就会失败,此时wait返回-1,同时errno被置为ECHILD。

技术分享

技术分享

技术分享

技术分享

 

以上是关于2014025660《嵌入式系统程序设计》第五周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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