2014025650《嵌入式系统程序设计》第五周学习总结
标准I/O的编程
在对二进制的读写过程中,使用fread()和fwite()完成。
fread()
函数原型:size_t fread(void* buff,size_t size,size_t count,FILE* stream)
作用:从文件中读入数据到指定的地址中
参数:第一个参数为接收数据的指针(buff),也即数据存储的地址
第二个参数为单个元素的大小,即由指针写入地址的数据大小,注意单位是字节
第三个参数为元素个数,即要读取的数据大小为size的元素个素
第四个参数为提供数据的文件指针,该指针指向文件内部数据
返回值:读取的总数据元素个数
fwite()
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
fork()
fork 这个英文单词在英文里是"分叉"意思, fork() 这个函数作用也很符合这个意思. 它的作用是复制当前进程(包括进程在内存里的堆栈数据)为1个新的镜像. 然后这个新的镜像和旧的进程同时执行下去. 相当于本来1个进程, 遇到fork() 函数后就分叉成两个进程同时执行了. 而且这两个进程是互不影响
fork() 和exec 函数与system()函数比较
见到上面execvp函数的输出. 你会发现 exec函数只是系统调用, 它是不支持管线处理的,而system()函数是支持的. 他的内部会自动fork() 1个子进程,但是效率没有fork() 和 exec配合使用好.但是exec 支持执行脚本. 所以不需要管线处理的命令或者脚本可以利用fork() 和 exec函数来执行.

浙公网安备 33010602011771号