标准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调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;

fork() 和exec 函数与system()函数比较

见到上面execvp函数的输出. 你会发现 exec函数只是系统调用, 它是不支持管线处理的,而system()函数是支持的. 他的内部会自动fork() 1个子进程,但是效率没有fork() 和 exec配合使用好.但是exec 支持执行脚本. 所以不需要管线处理的命令或者脚本可以利用fork() 和 exec函数来执行.

函数名: exit()
所在头文件:stdlib.h(如果是"VC6.0"的话头文件为:windows.h)

功 能: 关闭所有文件,终止正在执行的进程。

exit(1)表示异常退出.这个1是返回给操作系统的。

exit(x)(x不为0)都表示异常退出

exit(0)表示正常退出

exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以供其他程序使用。