
Linux/Unix系统编程手册
文章平均质量分 69
barbyQAQ
这个作者很帅,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LVM调整VG和PV
LVM狠狠拿捏了原创 2024-07-13 16:10:04 · 275 阅读 · 0 评论 -
debian KVM安装虚拟机
【代码】debian KVM安装虚拟机。原创 2024-07-12 19:50:52 · 500 阅读 · 0 评论 -
libcurl手册-curl_easy_perform()
注意,不要把同一个CURL* 并行地交给多个curl_easy_perform()执行。原创 2024-06-30 09:08:56 · 626 阅读 · 0 评论 -
libcurl手册-CURLOPT_WRITEDATA
要注意Win32 DLL下,必须设置CURLOPT_WRITEFUNCTION,否则程序会崩溃。原创 2024-06-30 09:02:51 · 452 阅读 · 0 评论 -
tnftp手册翻译
请注意,如果此标记出现在 .netrc 文件中的任何非匿名用户中,而且有除此用户之外的任何人可读取 .netrc 文件,则tnftp将中止自动登录过程。然后,tnftp fork一个shell,使用**popen(3)**和提供的参数,并从stdout(stdin)读取(写入)。需要字节计数作为参数的命令(例如,hash、rate和xferbuf)支持参数上的可选后缀,该后缀更改参数的解释。ftp_proxy:在进行FTP URL请求时使用的FTP代理的URL(如果未定义,则使用标准的FTP协议)。原创 2024-04-17 15:51:38 · 977 阅读 · 0 评论 -
对常见FTP客户端/服务器的调查与分析
主要是想看看常见的服务器和客户端是如何实现协议中要求的功能的,。比如RF959要求的,看起来就很抽象。实测发现,那些很抽象的要求,常见的服务器和客户端都没实现。(很好,我也有理由不实现了🥰)原创 2024-04-14 23:55:05 · 883 阅读 · 1 评论 -
getaddrinfo解析域名
【代码】getaddrinfo解析域名。原创 2024-03-24 20:34:42 · 257 阅读 · 0 评论 -
gethostbyname()域名解析到IP
入参是域名字符串,返回值中存储了对应的IP地址。除了返回IP信息外,还带有其他信息。域名转IP只需要关注。原创 2024-03-24 11:50:46 · 474 阅读 · 0 评论 -
小项目:C++拦截Linux下IP和文件访问
Linux下实现IP和文件访问拦截,代码量1000行。原创 2023-07-14 17:12:30 · 1078 阅读 · 0 评论 -
openat()系统调用
openat()原创 2023-07-07 13:50:44 · 1084 阅读 · 0 评论 -
getsockname()和getpeername()
缓冲区太小,地址会被截断,这种情况下,会返回一个比初始提供的更大的值。缓冲区太小,IP名会被截断。中存入实际返回的字节数。当前所绑定的地址,存入。原创 2023-07-05 16:09:41 · 527 阅读 · 0 评论 -
inotify手册
如果先前已将pathname加入fd的监控列表,则会修改现有pathname监控项的掩码,并返回其监控描述符。会在列表中创建一个新的监控项,并返回一个新的、非负的监控描述符,用来在后续操作中指代此监控项。之所以这么做,是因为很多应用程序都并不关注同一时间的反复出现,而其丢弃多余的事件能降低内核维护事件队列所需的内存总量。会从文件描述符fd所指代的 inotify实例中,删除由wd所定义的监控项。,会返回其所指代的inotify实例中的当前可读字节数。既可以追加新的监控项,也可以修改现有监控项。原创 2023-07-04 12:40:15 · 303 阅读 · 0 评论 -
ptrace()手册翻译
option is not in effect,则被跟踪进程对 execve(2) 的所有成功调用都将导致向其发送 SIGTRAP 信号,从而使父进程有机会在新程序开始执行之前获得控制权。当跟踪器完成跟踪后,它可以通过 PTRACE_DETACH 使被跟踪者继续以正常的、未跟踪的模式执行。使得一个进程(tracer)能够观察、控制另一个进程(tracee)的执行,以及检测、改变tracee的内存、寄存器。当被跟踪时,tracee每发送一个信号就会停下,即使信号被忽略了(一个例外是。原创 2023-06-30 15:52:58 · 351 阅读 · 0 评论 -
线程特有数据
线程特有数据的具体实现,不是我们应该关心的。但是了解它的实现,有助于我们理解它的使用方法。原创 2023-06-29 16:32:30 · 150 阅读 · 0 评论 -
poll()系统调用
参数fds列出了我们需要poll()来检查的文件描述符。该参数为pollfd参数nfds指定了数组fds中元素的个数。数据类型nfds_t实际为无符号整型。pollfd结构体中的events和revents字段都是位掩码。调用者初始化events来指定需要为描述符fd做检查的事件。当poll()返回时,revents被设定以此来表示该文件描述符上实际发生的事件。下表列出了可能会出现在events和revents字段中的位掩码。该表中第一组位掩码(POLLINPOLLRDNORMPOLLRDBAND。原创 2023-05-10 20:49:41 · 801 阅读 · 0 评论 -
POSIX正则表达式
https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressionshttps://en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions原创 2023-04-05 07:47:49 · 676 阅读 · 0 评论 -
POSIX条件变量 pthread_cond_t
posix_cond_t原创 2023-04-05 04:26:12 · 299 阅读 · 0 评论 -
CygWin、MingW、MSYS之间的关系
msys转载 2023-03-08 14:31:00 · 148 阅读 · 0 评论 -
编译选项导致的 undefined reference to `typeinfo XXX`
cmake原创 2023-02-10 23:00:41 · 2455 阅读 · 0 评论 -
pthread_mutex_t互斥量
pthread_mutex_t原创 2022-11-05 16:05:05 · 1034 阅读 · 0 评论 -
pthread_cancel手册翻译
你还在困惑pthread_cancel()吗?原创 2022-11-01 20:44:10 · 393 阅读 · 1 评论 -
线程 Pthread API
线程原创 2022-09-17 16:51:56 · 1147 阅读 · 0 评论 -
21.目录与链接——系统调用
创建和移除(硬)链接:link()和unlink()#include <unistd.h>int link(const char *oldpath, const char *newpath); Returns 0 on success, or -1 on error.若oldpath中提供的是一个已经存在的文件的路径名,则系统调用link()将以newpath参数所指定的路径名创建一个新链接。若newpath指定的路径名已然存在,则不会将其覆盖;相反,将产生一个错误(EEXIST)原创 2022-03-03 20:57:34 · 792 阅读 · 0 评论 -
20.目录与链接——概念
目录和硬链接在文件系统中,目录的存储方式类似于普通文件,区别有:在目录的i-node条目中,会将其标记为一种不同的文件类型目录是经特殊组织而成的文件。本质上就是一个表格,包含文件名和i-node编号。进程能够打开一个目录,但却不能用read()去读取目录的内容。同样也不能使用write()来改变目录内容。仅能借助于open()、link()、mkdir()、symlink()、unlink()以及rmdir()之类的系统调用来间接改变其内容。i-node表的编号始于1,而非0,因为若目录条目的原创 2022-03-02 15:54:12 · 1118 阅读 · 0 评论 -
19.文件属性
获取文件信息:stat()利用系统调用stat()、lstat()、以及fstat(),可获取与文件有关的信息,其中大部分提取自文件i节点。#include <sys/stat.h>int stat(const char *pathname, struct stat *statbuf);int lstat(const char *pathname, struct stat *statbuf);int fstat(int fd. struct stat *statbuf); All原创 2022-03-01 16:31:41 · 480 阅读 · 0 评论 -
18.文件系统
设备文件在内核中,每种设备类型都有与之相对应的设备驱动程序,用来处理设备的所有I/O请求。每个设备驱动程序所提供的接口一致。某些设备是实际存在的,如鼠标、键盘、磁盘、磁带。而另一些设备则是虚拟的,也就是不存在相应的硬件,但内核会(通过设备驱动程序)提供一种抽象设备。API与真实设备一样。设备分类设备分为以下两种类型:字符型设备基于每个字符来处理数据。终端和键盘都属于字符型设备。块设备。每次处理一块数据。块的大小取决于设备类型,但通常为512字节的倍数。磁盘和磁带设备都属于块设原创 2022-02-28 20:44:03 · 522 阅读 · 0 评论 -
17.文件I/O缓冲
简单来说就是系统调用和stdio I/O函数在操作磁盘文件时会对数据进行缓冲。因为磁盘读写太慢了,而内存更快。内核缓冲区高速缓存首先是系统调用,如write()和read(),在操作磁盘文件时不会直接发起磁盘访问,而是在用户空间缓冲区与内核缓冲区高速缓存之间赋值数据。内核会将内核缓冲区高速缓存中的数据与磁盘进行交换。控制内核缓冲区太难了太难了,还用不上。。。暂时放弃。。。stdio缓冲区而stdio 库也维护有自己的缓冲区,stdio缓冲区通过系统调用(write()、read())与内核.原创 2022-02-13 17:36:30 · 396 阅读 · 0 评论 -
16.系统和进程信息
/proc文件系统许多现代UNIX实现提供了一个/proc的虚拟文件系统。该文件爱你系统主流于/proc目录中,包含了各种用于展示内核信息的文件爱你,并且允许通过常规文件I/O来方便地读取,有时还可以修改这些信息。之所以称为虚拟,时因为其包含的文件和子目录并未存储于磁盘上,而是由内核在进程访问此类信息时,动态创建而成。以下是Linux专有的细节。获取与进程有关的信息:/proc/PID对于系统中每个进程,内核都提供了命名为/proc/PID(其中PID是进程的ID)的目录。此目录中的各种文件和子目原创 2022-02-13 17:34:43 · 713 阅读 · 0 评论 -
15.系统限制和选项
概念运行时恒定值运行时恒定值是指某一限制,若已经在<limits.h>中定义,则对于实现而言固定。但是该值是不确定的(因为该值可能依赖于可用的内存空间),因而在<limits.h>中会忽略其定义。这种情况可以使用sysconf()在运行时获取。运行时可增加值运行时可增加值是指某一限制,相对于特定实现其值固定,且运行此实现的所有系统至少都应支持这一最小值,然而,特定系统在运行时可能会增加这一最小值,可以使用sysconf()来获取系统所支持的实际值。路径名变量值路径名变量原创 2022-02-13 17:33:19 · 676 阅读 · 0 评论 -
14.进程时间
概念进程时间是进程创建后使用的CPU时间数量。处于记录的目的,内核把CPU时间分成以下两部分。用户CPU时间是在用户模式下执行所花费的时间数量,又是也称为虚拟时间(virtual time),这对于程序来说,是它已经得到CPU的时间。系统CPU时间是在内核模式中执行所花费的时间数量。这是内核用于执行系统调用或代表程序执行的其他任务所的时间。当我们运行一个shell程序,可以使用time(1)命令,来同时获取这两部分的时间和运行程序所需的实际时间。如:time ./a.outtimes()原创 2022-02-13 17:32:26 · 663 阅读 · 0 评论 -
13.时间转换函数
time_t转换为可打印格式1.ctime()#include <time.h>char *ctime(const time_t *timep); Returns pointer to statically allocated string terminated by newline and \0 on success, or NULL on error会返回一个长达26字节的字符串,内含标准格式的日期和时间,如:Thu Feb 10 23:11:07 2022该字符串包含换原创 2022-02-13 17:27:20 · 1410 阅读 · 0 评论 -
12.gettimeofday()和time()
gettimeofday()gettimeofday()可于tv指向的缓冲区中返回自Epoch(UTC 1970.1.1 00:00:00)以来的秒数,日期存储于time_t类型的变量,这是SUSv3定义的整数类型)#include <sys/time.h>int gettimeofday(struct timeval *tv, struct timezone*tz); Returns 0 on success, or -1 on error参数tv是指向如下数据结构的一个指.原创 2022-02-13 17:24:59 · 771 阅读 · 0 评论 -
2.getopt()解析命令行选项
文章目录前言函数原型背景知识参数说明解析过程需要使用optind的情况getopt()返回-1,表示已到到选项列表结尾的情况getopt()错误出现错误的情况处理错误的规则报错归纳表总之就是实例解析GNU扩展标准手册GNU实现避免方法总之glibc的扩展和SUS标准比起来是会有一些bug的。补充结语前言getopt(),很好理解,字面意思就是get option。虽然挺好用,但是用法,刚看到真是让人头大,有点复杂。不过结合实际,也是能拿下的。函数原型#include <unistd.h>原创 2022-01-09 00:32:18 · 589 阅读 · 0 评论 -
1.文件描述符、文件句柄和打开文件之间的关系
文件描述符、文件句柄和打开文件之间的关系。原创 2022-01-07 17:30:54 · 1177 阅读 · 2 评论