Linux网络编程学习笔记(1)
2021/10/18 7:10:07
本文主要是介绍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); /*正常退出*/
这篇关于Linux网络编程学习笔记(1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法