随笔分类 -  【21】linux编程

摘要:函数posix_memalign 函数posix_memalign原型: #include <stdlib.h> int posix_memalign(void **memptr, size_t alignment, size_t size); 参数说明 memptr: 双重指针,用于存储分配的内存 阅读全文
posted @ 2025-07-16 10:20 苏格拉底的落泪 阅读(158) 评论(0) 推荐(0)
摘要:rename函数 参考资料 1. rename函数解析 阅读全文
posted @ 2025-04-26 20:42 苏格拉底的落泪 阅读(25) 评论(0) 推荐(0)
摘要:文件加锁 1. 例子 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> void lock_set(int fd, int type) { struct flock lock; lock.l_w 阅读全文
posted @ 2023-12-07 16:09 苏格拉底的落泪 阅读(71) 评论(0) 推荐(0)
摘要:参考资料 1. 使用backtrace获取堆栈信息 2. How to print a stack trace whenever a certain function is called 阅读全文
posted @ 2023-10-16 21:46 苏格拉底的落泪 阅读(92) 评论(0) 推荐(0)
摘要:syscall函数 系统调用号 函数名 入口点 源码 0 read sys_read fs/read_write.c 1 write sys_write fs/read_write.c 2 open sys_open fs/open.c 3 close sys_close fs/open.c 4 s 阅读全文
posted @ 2023-06-28 22:42 苏格拉底的落泪 阅读(382) 评论(0) 推荐(0)
摘要:函数fmemopen、函数open_memstream 1. open_memstream函数原型: #include <stdio.h> FILE *open_memstream(char **ptr, size_t *sizeloc); 2. fmemopen函数原型: #include <st 阅读全文
posted @ 2023-06-27 14:17 苏格拉底的落泪 阅读(435) 评论(0) 推荐(0)
摘要:pipe 参考资料 1. Linux - pipe() 管道的使用 阅读全文
posted @ 2023-05-23 09:25 苏格拉底的落泪 阅读(36) 评论(0) 推荐(0)
摘要:参考资料 linux之pthread_atfork()函数讲解 阅读全文
posted @ 2023-05-22 14:55 苏格拉底的落泪 阅读(43) 评论(0) 推荐(0)
摘要:gethostname、gethostbyname 函数解析 #include <stdio.h> #include <sys/socket.h> #include <netdb.h> #include <unistd.h> #include <netinet/in.h> #include <arp 阅读全文
posted @ 2022-12-07 16:08 苏格拉底的落泪 阅读(249) 评论(0) 推荐(0)
摘要:一个 D-Bus 程序 /* 服务端代码 */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <dbus/dbus.h> void listen_signal() { D 阅读全文
posted @ 2022-10-24 13:39 苏格拉底的落泪 阅读(202) 评论(0) 推荐(0)
摘要:alarm函数 1. 简介设置定时器(闹钟)。在指定seconds后,内核会给当前进程发送 14)SIGALRM信号,进程收到信号后,默认动作终止。 每个进程都有且只有唯一个定时器。 2. alarm函数原型: unsigned int alarm(unsigned int seconds); 常用 阅读全文
posted @ 2022-07-13 18:11 苏格拉底的落泪 阅读(218) 评论(0) 推荐(0)
摘要:kill函数 1. 函数原型 int kill(pid_t pid, int signo); //signo:信号名 分析: 注意: 进程组:每个进程都属于一个进程组,进程组是一个或多个进程的集合, 它们相互关联,共同完成一个实体任务。每个进程组都有一个进程组长,默认进程组ID与进程组长ID相同。权 阅读全文
posted @ 2022-07-13 16:06 苏格拉底的落泪 阅读(186) 评论(0) 推荐(0)
摘要:信号 查看信号:kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) 阅读全文
posted @ 2022-07-13 15:50 苏格拉底的落泪 阅读(18) 评论(0) 推荐(0)
摘要:屏障 屏障(barrier)是用户协调多个线程并行工作的同步机制,屏障允许每个线程等待,直到合作线程都达到某一点,然后从该点继续执行。我们已经看到一种屏障,pthread_join 函数就是一种屏障,允许一个线程等待,直到另一个线程退出。 1. 函数原型:初始化和回收 int pthread_bar 阅读全文
posted @ 2022-07-13 14:13 苏格拉底的落泪 阅读(290) 评论(0) 推荐(0)
摘要:有名管道 1. 为何提出有名管道的说法,目的是为了克服无名管道的不足之处: 无名管道只能是用于具有亲缘关系的进程之间,这就限制了无名管道的使用范围。 有名管道可以使互不相关的两个进程互相通信,有名管道可以通过路径名来指出。并在文件系统课件为了这种有名管道,Linux中专门设立了一个专门的特殊文件系统 阅读全文
posted @ 2022-07-13 10:58 苏格拉底的落泪 阅读(127) 评论(0) 推荐(0)
摘要:信号量 PV 操作 计数信号量(Counting Semaphores)通常有两种操作,记做 P 和 V,V操作增加信号量 S,P操作减少信号量 S。信号量的一大特征就是它的值不能通过 PV 操作以外的方式更改。 wait(P操作):信号量数值减一,如果减一之后信号量数值为负,则进程进入信号量队列等 阅读全文
posted @ 2022-07-12 22:43 苏格拉底的落泪 阅读(197) 评论(0) 推荐(0)
摘要:函数getopt 在使用 getopt 解析命令行选项时,字符串 "a:b:cd::e" 定义了每个选项的类型以及它们是否需要参数。以下是这些选项的含义: 1. a: 单字符选项: -a 参数: 必须有参数。 示例: -a value 或 -avalue 2. b: 单字符选项: -b 参数: 必须 阅读全文
posted @ 2022-05-25 11:59 苏格拉底的落泪 阅读(53) 评论(0) 推荐(0)
摘要:读写锁 读写锁由「读锁」和「写锁」两部分构成,如果只读取共享资源用「读锁」加锁,如果要修改共享资源则用「写锁」加锁。所以,读写锁适用于能明确区分读操作和写操作的场景。 读写锁的工作原理是: 当「写锁」没有被线程持有时,多个线程能够并发地持有读锁,这大大提高了共享资源的访问效率,因为「读锁」是用于读取 阅读全文
posted @ 2022-04-12 22:51 苏格拉底的落泪 阅读(458) 评论(0) 推荐(0)
摘要:互斥锁与自旋锁 多线程访问共享资源的时候,避免不了资源竞争而导致数据错乱的问题,所以我们通常为了解决这一问题,都会在访问共享资源之前加锁。 最底层的两种就是会「互斥锁和自旋锁」,有很多高级的锁都是基于它们实现的,你可以认为它们是各种锁的地基,所以我们必须清楚它俩之间的区别和应用。 加锁的目的就是保证 阅读全文
posted @ 2022-04-12 22:44 苏格拉底的落泪 阅读(320) 评论(0) 推荐(0)
摘要:共享内存 下面是一个简单明了的 C++ demo,演示使用 shm_open + mmap 创建共享内存并在 mmap 后立即调用 shm_unlink,从而实现“匿名共享内存”(仅当前进程使用,路径消失,但映射依然有效)。 #include <fcntl.h> // shm_open #inclu 阅读全文
posted @ 2022-03-21 10:38 苏格拉底的落泪 阅读(88) 评论(0) 推荐(0)