随笔分类 -  【21】linux编程

摘要:字节序 与同一台计算机上的进程进行通信时,一般不用考虑字节序,字节序是一个处理器架构特性,用于指示像整数计算的大数据类型内部的字节如何排序。 假设上图图 中在内存 0x1000 到 0x1003 这连续的 4 个字节保存了数据,这段数据对应的数据类型是 int 类型。我们知道 int 类型的数据在大 阅读全文
posted @ 2022-01-15 14:53 苏格拉底的落泪 阅读(184) 评论(0) 推荐(0)
摘要:用户API 1. 函数原型: #include <unistd.h> uid_t getuid(void); uid_t geteuid(void); 说明:1. getuid()返回调用进程的真实用户ID。 2. geteuid()返回调用进程的有效用户ID。 和系统数据相关的一个结构passwd 阅读全文
posted @ 2021-12-29 19:59 苏格拉底的落泪 阅读(172) 评论(0) 推荐(0)
摘要:预分配磁盘空间 我们在开发程序的过程中,往往需要预分配磁盘空间,防止因磁盘空间不够而引发程序异常问题(已踩过坑), 现网查阅资料,有些预分配磁盘空间的方法不正确。 1.1 posix_fallocate函数 函数原型: #include <fcntl.h> int posix_fallocate(i 阅读全文
posted @ 2021-12-06 22:13 苏格拉底的落泪 阅读(857) 评论(0) 推荐(0)
摘要:参考资料 1.Linux Page Cache的理解 2. Linux系统中的Page cache和Buffer cache 3.Linux 的 Page Cache 阅读全文
posted @ 2021-12-06 21:35 苏格拉底的落泪 阅读(103) 评论(0) 推荐(0)
摘要:扇区与块/簇 如图所示,描述介绍了扇区、磁道等概念: A:Track 磁盘磁道(粉红色部分) B:Geometrical sector 几何学中的扇形(紫色部分) C:Track sector 磁盘扇区(玫红色部分) D:Cluster 块/簇(绿色部分) 说完扇区,就不得不提一些其他相关概念,因为 阅读全文
posted @ 2021-12-06 17:52 苏格拉底的落泪 阅读(432) 评论(0) 推荐(0)
摘要:几个时间概念 1:Coordinated Universal Time(UTC): 协调世界时,又称世界标准时间,也即格林威治标准时间(Greenwich Mean Time,GMT),中国内地的时间与UTC得时差为+8,也即UTC+8,美国为UTC-5。 2:Calendar Time: 日历时间 阅读全文
posted @ 2021-10-11 22:55 苏格拉底的落泪 阅读(759) 评论(0) 推荐(0)
摘要:使用条件变量的原因 如果没有条件变量,那么我们等待一个条件满足则会是下面这样的模型: 首先加锁进入临界区去查看条件是否满足,不满足则解锁离开临界区,睡眠一段时间再继续循环判断。在这种情况下如果刚离开临界区,条件变为满足,那么线程必须还要等一段时间重新进入临界区才能知道条件满足(如果在这段时间内,条件 阅读全文
posted @ 2021-08-10 22:35 苏格拉底的落泪 阅读(323) 评论(0) 推荐(0)
摘要:#include <pthread.h> #include <stdio.h> #include <unistd.h> void *func(void *data) { while (1) { printf("Speaking from the detached thread...\n"); sle 阅读全文
posted @ 2019-05-10 15:24 苏格拉底的落泪 阅读(133) 评论(0) 推荐(0)
摘要:centos7 删除内核 对于小硬盘的VPS,如果使用了CentOS,那内核的几百兆空间还是很有必要清理删除掉的。如何安全的删除CentOS 中的不需要的内核呢?列出内核: rpm -qa |grep kernel-[0-9] 移除不需要的内核: yum remove kernel-3.10.0-8 阅读全文
posted @ 2019-03-27 16:00 苏格拉底的落泪 阅读(195) 评论(0) 推荐(0)
摘要:epoll概念 epoll对文件描述符的操作方式有两种工作模式:LT模式(Level Trigger,水平触发) 和ET模式(Edge Trigger,边缘触发)。 LT模式:当epoll_wait检测到其上有事件发生并将此事件通知应用程序后,应用程序可以不立即处理该事件,这样,当应用程序下一次调用 阅读全文
posted @ 2019-01-25 16:55 苏格拉底的落泪 阅读(291) 评论(0) 推荐(1)
摘要:poll函数 函数原型: struct ibv_context *ibv_open_device(struct ibv_device *device); 功能 打开指定的 InfiniBand 设备 返回设备上下文 (context),用于后续所有操作 这是使用 InfiniBand 设备的第一步 阅读全文
posted @ 2019-01-23 22:10 苏格拉底的落泪 阅读(536) 评论(0) 推荐(0)
摘要:实验一 代码:链接【01项目】 1. 先启动服务器,如图: 2. 然后启动客户端,如图: 3. 输出结果: 【注意】:在服务器终止时,给父进程发送了一个SIGCHILD信号,这一点本例发生了,但是我们没有在代码中捕捉该信号,而默认该信号时被忽略,既然父进程未加处理,子进程于是进入僵尸状态。 如图: 阅读全文
posted @ 2019-01-23 18:40 苏格拉底的落泪 阅读(157) 评论(0) 推荐(0)
摘要:文件IO #include<unistd.h> ssize_t read(int fd, void *buf, size_t count); read返回值: 1. = 0:数据读完(读到文件、管道、socket末尾-对端关闭) 2. -1: errno == EINTR:被信号中断 errno = 阅读全文
posted @ 2019-01-23 13:50 苏格拉底的落泪 阅读(110) 评论(0) 推荐(0)
摘要:进程程序替换 进程程序替换原理 fork创建子进程执行的是和父进程相同的程序(也有可能是某个分支),通常fork出的子进程是为了完成父进程所分配的任务,所以子进程通常会调用一种exec函数(六种中的任何一种)来执行另一个任务。当进程调用exec函数时,当前用户空间的代码和数据会被新程序所替换,该进程 阅读全文
posted @ 2019-01-14 21:37 苏格拉底的落泪 阅读(258) 评论(0) 推荐(0)
摘要:函数sigsuspend sigqueue函数原型: 函数作用:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用 int sigqueue(pid_t pid, int signo, const union sigval value); 分析: 第 阅读全文
posted @ 2019-01-14 20:37 苏格拉底的落泪 阅读(427) 评论(0) 推荐(0)
摘要:函数函数sigaction 1. 函数sigaction原型: int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 分析: 参数 signum :要捕获的信号。 参数act:truct s 阅读全文
posted @ 2019-01-14 10:47 苏格拉底的落泪 阅读(2975) 评论(0) 推荐(0)
摘要:网络IPC:套接字 strcut sockaddr 很多网络编程函数诞生早于IPv4协议,那时候都使用的是sockaddr结构体,为了向前兼容,现在sockaddr退化成了(void *)的作用,传递一个地址给函数,至于这个函数是sockaddr_in还是sockaddr_in6,由地址族确定,然后 阅读全文
posted @ 2019-01-13 21:58 苏格拉底的落泪 阅读(383) 评论(0) 推荐(0)
摘要:函数select 函数原型: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); void FD_CLR(int fd, fd_set *set); 阅读全文
posted @ 2019-01-13 21:17 苏格拉底的落泪 阅读(185) 评论(0) 推荐(0)
摘要:函数epoll 1. 函数epoll_creat: 该函数生成一个epoll专用的文件描述符: int epoll_creae(int size); 参数: size:epoll上能关注的最大描述符数 2. epoll_ctl:用于控制某个epoll文件描述符事件,可以注册、修改、删除: int e 阅读全文
posted @ 2019-01-13 19:55 苏格拉底的落泪 阅读(422) 评论(0) 推荐(0)
摘要:函数wait 一个进程在终止时会关闭所有文件描述符,释放在用户空间释放的内存,但它的PCB还保留着,内核在其中保存一些信息:如果是正常终止时则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个,这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除这个进程,我们知道 阅读全文
posted @ 2019-01-13 19:08 苏格拉底的落泪 阅读(414) 评论(0) 推荐(0)