Linux网络编程学习笔记(1)

1、bzero()函数:将指定字符串s的前n个字节为零。

#include <string.h> 
void bzero(void *s, int n);
2、memset()函数:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,直接操作内存空间,常用于内存初始化
# include <string.h>
void *memset(void *s, int c, unsigned long n);
3、atoi()函数:将字符串转换成整型数,返回转换后的整型数,如果 str 不能转换成 int 或者 str 为空字符串,则返回 0
#include <stdlib.h>
int atoi (const char * str);

atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。

4、strpbrk()函数:检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,如果有,则返回该字符在str1中的位置的指针。

#include <string.h>
char *strpbrk(const char *str1, const char *str2);

该函数依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置,空字符 null('\0') 不包括在内,若找不到则返回空指针。

5、basename()函数:截取path中的去除目录部分的最后的文件或者路径名。成功时,返回截取path中的去目录部分的最后的文件或路径名指针;失败返回NULL。

#include <libgen.h>
char *basename(char *path);

6、stat()函数:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中。成功返回0,失败返回-1,错误代码存于errno中

#include <sys/stat.h>
#include <unistd.h>
int stat(const char *file_name, struct stat *buf);

errno错误代码:

    ENOENT         参数file_name指定的文件不存在
    ENOTDIR        路径中的目录存在但却非真正的目录
    ELOOP          欲打开的文件有过多符号连接问题,上限为16符号连接
    EFAULT         参数buf为无效指针,指向无法存在的内存空间
    EACCESS        存取文件时被拒绝
    ENOMEM         核心内存不足
    ENAMETOOLONG   参数file_name的路径名称太长

stat结构体:

struct stat
 {
  dev_t st_dev;            //文件的设备编号
  ino_t st_ino;            //节点
  mode_t st_mode;          //文件的类型和存取的权限
  nlink_t st_nlink;        //连到该文件的硬连接数目,刚建立的文件值为1
  uid_t st_uid;            //用户ID
  gid_t st_gid;            //组ID
  dev_t st_rdev;           //(设备类型)若此文件为设备文件,则为其设备编号
  off_t st_size;           //文件字节数(文件大小)
  unsigned long st_blksize;//块大小(文件系统的I/O 缓冲区大小)
  unsigned long st_blocks; //块数
  time_t st_atime;         //最后一次访问时间
  time_t st_mtime;         //最后一次修改时间
  time_t st_ctime;         //最后一次改变时间(指属性)
};

st_mode:文件的类型和存取权限

    S_IFMT   0170000         文件类型的位遮罩
    S_IFSOCK 0140000         scoket
    S_IFLNK 0120000          符号连接
    S_IFREG 0100000          一般文件
    S_IFBLK 0060000          区块装置
    S_IFDIR 0040000          目录
    S_IFCHR 0020000          字符装置
    S_IFIFO 0010000          先进先出
    S_ISUID 04000            文件的(set user-id on execution)位
    S_ISGID 02000            文件的(set group-id on execution)位
    S_ISVTX 01000            文件的sticky位
    S_IRUSR(S_IREAD) 00400   文件所有者具可读取权限
    S_IWUSR(S_IWRITE)00200   文件所有者具可写入权限
    S_IXUSR(S_IEXEC) 00100   文件所有者具可执行权限
    S_IRGRP 00040            用户组具可读取权限
    S_IWGRP 00020            用户组具可写入权限
    S_IXGRP 00010            用户组具可执行权限
    S_IROTH 00004            其他用户具可读取权限
    S_IWOTH 00002            其他用户具可写入权限
    S_IXOTH 00001            其他用户具可执行权限

7、fstat()函数:由文件描述符获取文件状态,将参数filedes 所指向的文件状态复制到参数buf 所指向的结构体(struct stat)中

#include <sys/stat.h>
#include <unistd.h>
int stat(int fd, struct stat *buf);

fstat()与stat()作用完全相同,不同之处在于传入的参数为已打开的文件描述符。

8、open()函数:建立一个文件描述符,其他的函数可以通过文件描述符对指定文件进行读写操作。

#include <sys/types.h>
#incldue <sys/stat.h>
int open(const char*pathname, int flags);
int open(const char*pathname, int flags, mode_t mode);

mode:

  O_RDONLY:   只读打开
  O_WRONLY:   只写打开
  O_RDWR:     读,写打开
  O_CREAT:    若文件不存在,则创建它,需要使用mode选项。来指明新文件的访问权限
  O_APPEND:   追加写,如果文件已经有内容,这次打开文件所写的数据附加到文件的末尾而不覆盖原来的内容

9、close()函数:关闭一个已经打开的文件

#include <unistd.h>
int close(int fd);

10、umask()函数:改变文件权限,常与open()函数结合使用

#include <sys/types.h>
#include <sys/stat.h>
mode_t umask(mode_t mask);

umask()函数会将系统umask值设成参数mask&0777后的值,然后将先前的umask值返回。在使用open()建立新文件时,该参数mode并非真正建立文件的权限,而是(mode& ~umask)的权限值。

11、exit()函数:终止进程

#include <stdlib.h>
void exit(int status);
exit(1);              /*异常退出,不为0都表示异常退出*/
exit(0);              /*正常退出*/

上一篇:sqlite3学习笔记


下一篇:【MapBox】建筑矢量切片