随笔分类 - Linux系统编程-学习记录
摘要:今天无意中发现了两个函数,可以方便的从给定的路径中提取目录名和文件名。以前介绍过用strrchr()函数去做的方式(Linux C: 从指定路径中获取文件名)。 不多废话,就是下面这两个函数: bool generate_transfer_file(const uint8_t *audio_head
阅读全文
摘要:一.线程和进程的关系 线程被称为轻量级的进程(LWP),也有PCB, 创建线程和创建进程使用的底层函数都是一样的。从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页(4096)表是相同的。在linux下,线程是最小的执行单位,进程是最小的资源分配单位。CPU在执行的
阅读全文
摘要:一.守护进程编程模型 二.代码模型 每隔10s在/tmp/damon.log中写入当前时间 打开/tmp/damon.log文件 2018-03-29 14:54:29 2018-03-29 14:54:39 2018-03-29 14:54:49 2018-03-29 14:54:59 2018-
阅读全文
摘要:一. 终端 进程里记录了自己的控制终端是谁,使用ps ajx 命令,其中的tty部分代表当前使用的终端是什么。打问号代表这个进程是没有控制终端的,有控制终端的会记录控制终端的编号是什么 tty 代表字符终端, pts 代表图形界面终端, /dev/tty,指向当前所用的终端。 二.进程组 进程组是一
阅读全文
摘要:一.概述 信号可以用来向进程传递消息,当操作系统不想让某个进程运行的时候,会给这个进程发送相应的结束信号。man page的第七章专门来讲Signal, 可以通过man 7 signal 指令来查看。 信号可以由以下途径产生: 1) 终端特殊按键 Ctrl+c SIGINTCtrl+z SIGTST
阅读全文
摘要:一.实现原理 首先利用了进程的一个共性,即:用户空间不共用,内核空间共用 每个进程各自有不同的用户地址空间, 任何一个进程的全局变量在另一个进程中都看不到,所有进程之间要交换数据必须通过内核,因此可以在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到内核缓冲区,进程2再从内核缓冲区把数据读走,内核
阅读全文
摘要:一.fork() fork()用来创建一个子进程,子进程复制父进程的0-3G空间和父进程内核中的PCB,但子进程和父进程的id号不同。 fork()调用一次,返回两次 在父进程中返回子进程的PID,在子进程中返回0。 例: 运行结果: cur process is parentcur pid is:
阅读全文
摘要:一.stat()&fstat()&lstat() 获取文件详细信息(文件大小,硬链接个数,ino编号,文件最近访问和修改时间,文件权限,文件类型,文件所有者ID和组ID) 运行结果: yongdaimi@ubuntu:~/Documents/linux-sys/02-文件系统$ ./app empt
阅读全文
摘要:一. open()&close() 二.read()&write() write.c read.c 运行结果: str is: http://www.baidu.comhttp://www.taobao.comhttp://www.qq.comhttp://www.dota2.com.cnhttp:
阅读全文