系统函数学习笔记1

来源:互联网 发布:无线连接网络打印机 编辑:程序博客网 时间:2024/06/05 01:56

函数学习
1、snprintf
函数名:snprintf
函数原型:int snprintf(char *str, size_t size,const char *format);
函数功能:格式化输出转换(formatted output conversion),往字符串str中写
所属头文件:#include <stdio.h>
返回值:
成功:返回函数一次写入字符串的个数,不包括'\0';字符串长度小于size,实际返回的是字符串的长度,如果大于size,最大写入前size
失败:返回一个负数
参数说明:
char *str:要写入的数组的地址
size_t size:每次写入的最大字符数(不包括'\0')
char *format:源字符串
eg:
snprintf(lenbuf,sizeof(lenbuf),"%04d",ilMsglen);
将ilMsglen的值按照%04d的格式大小为sizeof(lenbuf)写入到lenbuf中


2、inet_ntoa
函数名:inet_ntoa
函数原型:char  *inet_ntoa(struct in_addr in);
函数功能:网络地址操作常规,
   函数将给定的以标准的数字点标记法的网络主机地址转化成字符串,字符串返回放在静态分配的数组中,可被重写的
所属头文件:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
返回值:
返回字符串??
参数说明:
eg:

3、ntohs
函数名: ntohs
函数原型:uint16_t ntohs(uint16_t netshort);
函数功能:在主机和网络字节顺序中转换值,具体的是将无符号的整型数netshort从网络字节顺序转换成主机自己顺序
所属头文件:
#include <arpa/inet.h>
返回值:

参数说明:
eg:


4、setsockopt
函数名:setsockopt
函数原型:
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
int set(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
函数功能:在socket上得到和设置,函数操作socket的相关选项,选项可以存在多种协议层级,他们通常在socket的最高级
所属头文件:
#include <sys/types.h>
#include <sys/socket.h>
返回值:
成功:返回0
失败:返回-1
参数说明:
int s;监听端口的描述符
int level:SOL_SOCKET为了在sokcet层操作level被指定为SOL_SOCKET
optname即SO_REUSEADDR设置为1,表示允许创建端口号相同但IP地址不同的多个socket描述符
eg:

5、time
函数名:time
函数原型:time_t time(time_t *t);
函数功能:得到以秒计数的时间,返回从Epoch计时的时间
所属头文件:
#include <time.h>
返回值:
成功:返回正确的Epoch时间
失败:返回((time_t)-1)
参数说明:
time_t *t:
eg:time(&llClass);???

6、getpid
函数名:getpid
函数原型:pid_t getpid(void);
函数功能:得到进程识别??返回当前进程的进程ID,通常情况下经常用来产生唯一的空的文件名(this is often
 used by routines that generate unique temporary filenames).
所属头文件:
#include <sys/types>
#include <unistd.h>
返回值
成功:???
失败:???
参数说明:无
eg:

7、menset
函数名:memset
函数原型:void *memset(void *s, int c, size_t n);
函数功能:用一个连续的字节填充内存,函数用c填充s指向的内存区域的前n个字节
所属头文件
#include <string.h>
返回值:
返回一个指向内存区域的指针s
参数说明:wu


8、memcpy
函数名:memcpy
函数原型:void *memcpy(void *dest, const void *src, size_t n);
函数功能:复制内存区,函数从src内存区域中拷贝n个字节到内存区域dest
  注意内存区域不能重叠,如果要重叠的话使用memmove
所属头文件:
#include <string.h>
返回值:返回一个指向dest内存区域的指针
参数说明:
void *dest:目标内存区
const void *src:源内存区
size_t n:拷贝的字节数
特别说明:memmove的重叠就是说dest可以和src的内存重叠


 

9、头文件:
#include <fcntl.h>
名称:#include <fcntl.h>
作用:文件控制选项,头文件shall中提供给函数fcntl和open函数使用的请求和参数

10、getopt
函数名:getopt
函数原型:int getopt(int argc,char *const argv, const char *optstring);
函数功能:解析命令行参数(具体的作用??)
函数所属头文件:
#include <unistd.h>
返回值:
成功:即成功找到选项,返回选项的字符
失败:如果所有的命令选项都被解析完毕则返回-1
如果函数碰到一个字符不在optstring中,返回?
如果没有参数,根据参数optstring中的第一个字符确定,如果第一个字符是:,则返回
:,若不是则返回?
参数说明:
注意:int main(int argc, char **argv)
int argc:main函数中的参数个数
char *const argv:main函数的命令
eg:请看man page中的案例

11、setjmp
函数名称:setjmp
函数原型:
int setjmp(jmp_buf env);
函数功能:
 为非本地goto保存栈内容(save stack context for non-local goto)
 在程序的低级别次惯例中处理错误遇到中断时有用。
 将栈内容保存在env中,给后面的longjmp()用
函数所属头文件:
#include <setjmp.h>
返回值:
如果直接返回的时候就返回0(return 0 if returning directly)
参数说明:

 

原创粉丝点击