随笔分类 - Linux系统编程
系统性学习
摘要:虽然学习Linux系统编程比不上学习QT之类的快速见效, 但是我想,系统编程在Linux的江湖里,总是占据着无上的地位,这大概就是"地基"二字含义的体现了, 地基搞稳了,才有可能多栖地发展。 Linux系统程序设计,大致需要了解以下几个模块 1. 2. 3. 4. 5. 6. 7. 8. .
阅读全文
摘要:第一部分 1. 直接上代码 #include <stdio.h> #include <unistd.h> #include <stdlib.h> int globvar = 6; char buf[] = "a write to stdout!\n"; void son_process_end_fu
阅读全文
摘要:1. 先贴代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int globvar = 6; /* external variable in initialized data */ int main(void) { int v
阅读全文
摘要:关联博文: 当文件操作遇上fork Linux内核的文件结构体 struct file { ......... struct path f_path; //文件的路径 #define f_dentry f_path.dentry #define f_vfsmnt f_path.mnt const s
阅读全文
摘要:进程间通信概述 1. 什么是进程间通信? 什么是线程间通信? 进程间通信: 在用户空间实现进程间通信是不可能的,进程间通信通过Linux内核对象来实现。 线程间通信:这在用户空间就可以实现,甚至可以通过全局变量来通信。 2. 有哪几种进程间通信方式? ** 管道通信:无名管道、有名管道(文件系统中有
阅读全文
摘要:I/O处理五种模型 *** 阻塞I/O模型 *** 非阻塞I/O模型 *** I/O多路转接模型 *** 信号驱动I/O模型 当数据报准备好的时候,内核会向应用程序发送一个信号,进程对信号进行捕捉,并且调用信号处理函数来获取数据报。 该模型分为两个阶段: 1.数据准备阶段:未阻塞,当数据准备完成之后
阅读全文
摘要:原型: #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ... /* arg */ ); 功能: 改变已经打开文件的性质 常见使用方式: int fcntl(int fd, int cmd); int fcntl(i
阅读全文
摘要:我的相关博文: 系统编程-进程-exec系列函数超级详解(带各种实操代码) 一般我们会调用exec执行另一个程序,此时会用全新的程序替换子进程的正文,数据,堆和栈等。 此时保存文件描述符的变量当然也不存在了,我们就无法关闭无用的文件描述符了。 所以通常的做法是,我们一般会fork子进程后,先在子进程
阅读全文
摘要:在linux下,一切皆文件。 文件描述符用于操作文件。 从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2);)0表示标准输入,1表示标准输出,2表示标准错误。 一个进程当前有哪些打开的文件描述符可以通过/proc/进程ID/fd目录查看。 1、 dup函数 #include <un
阅读全文
摘要:# 行缓存会输出的时机: 行缓存满,程序结束,遇到fflush刷新,遇到换行符。 磁盘通常是全缓存。 标准错误一般是无缓存,希望尽快被输出到终端上。系统调用api不带缓冲,C库函数api带缓冲。 # 调用read系统调用读取大量磁盘数据时: 先通过df命令查看磁盘文件系统(一般是/dev/sda1)
阅读全文
摘要:列一个我在工作上写的代码片段, 下面是消费者端的代码 static void input_status_report_thread(struct local_pthread_wrapper* thread, void* param) { struct input_manager *input = N
阅读全文
摘要:gettid()这个函数不可以在程序中直接使用,它是Linux本身的一个函数, 但是:仅包含#include <sys/types.h>,然后使用,编译时会报该函数未定义之类的错误! 解决方案: 我们可以自已定义实现方法,如下: #include <sys/syscall.h> /*添加上此头文件*
阅读全文
摘要:文章写得好,转载一下, https://blog.csdn.net/triorwy/article/details/80380977 .
阅读全文

浙公网安备 33010602011771号