在基于TCP连接建立的网络通信中,我们通常习惯用read函数接收数据,用write函数发送数据,这两个函数返回实际接收到的或者发送出去的字节数,在网络不稳定的情况下,我们经常会发现指定发送的数据还未发送完整或者指定接收的数据尚未接收完整,read或者write函数就返回了,通俗的讲就是发送或者接收的数据不完整。在数据量大、网络条件差的情况下尤为明显。对于数据完整度要求严格的通讯协议下,这样的数据丢包就会严重影响程序的性能。那么有没有办法完整的接收或者发送数据呢?答案是肯定的。在此,对read和write函数重新封装一下,得到readn函数和writen函数,顾名思义,readn或者writen函数只有接收或者发送完指定长度的数据方能返回,当然,如果在接收或者发送的过程中连接断开或者不可达了,将返回-1。 阅读全文
1、如果一个形参具有默认实参,那么它后面的所有形参都必须有默认实参。
2、只有当定义它的函数被调用时才存在的对象称为自动对象。自动对象在每次调用函数时创建和撤销。
3、形参也是自动对象,其占用的存储空间在调用函数时创建,在函数结束时撤销。
4、静态局部变量一旦被创建,在程序结束以前都不会被撤销。定义它的函数被多次调用时,静态局部变量会持续存在并保存它的值。例如下面程序将依次输出1到10。 阅读全文
函数功能:
检查当前进程对指定的文件是否具有执行某种操作的权限。
函数用法:
#include <unistd.h> #include <fcntl.h> int access(const char *pathname, int mode);