
Linux
DXT00
这个作者很懒,什么都没留下…
展开
-
Linux ulimit命令
Linux ulimit命令转自:https://www.runoob.com/linux/linux-comm-ulimit.htmlLinux ulimit命令用于控制shell程序的资源。ulimit为shell内建指令,可用来控制shell执行程序的资源。语法ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <转载 2021-02-28 16:18:58 · 243 阅读 · 0 评论 -
Linux中mprotect()函数的用法
Linux中mprotect()函数的用法转自:https://blog.youkuaiyun.com/Roland_Sun/article/details/33728955在Linux中,mprotect()函数可以用来修改一段指定内存区域的保护属性。函数原型如下:#include <unistd.h>#include <sys/mmap.h>int mprotect(const void *start, size_t len, int prot);mprotect()转载 2021-02-28 15:38:41 · 2717 阅读 · 1 评论 -
strace 跟踪进程中的系统调用
转自:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.htmlstrace 跟踪进程中的系统调用strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。6.1. 输出参数转载 2021-02-28 14:50:22 · 1192 阅读 · 0 评论 -
vim 命令记录
注释块:To comment out blocks in vim:press Esc (to leave editing or other mode) hit ctrl + v (visualblock mode) use the ↑ / ↓ arrow keys to select lines you want (it won't highlight everything - it's OK!) Shift + i (capital I) insert the text you wan.转载 2020-07-25 10:42:44 · 189 阅读 · 0 评论 -
Linux高性能服务器编程笔记 --Chapter4 HTTP代理服务器
分类:正向代理服务商、反向代理服务器和透明代理服务器正向代理服务器:要求客户端自己设置代理服务器地址。客户的每次请求都将直接发送到该代理服务器,并由代理服务器来请求资源。反向代理服务器:反向代理被设置在服务器端,因而客户端无需进行任何设置。反向代理指用代理服务器接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,内部服务器将得到的结构返回客户端。各大网站通常分区域设置了多个代理服务器,所以不同的地方ping同一个域名可能得到不同的IP地址透明代理服务器 :透明代理只能设原创 2020-06-23 18:09:03 · 786 阅读 · 0 评论 -
Linux高性能服务器编程笔记 -- Chapter1 TCP/IP协议栈
查看服务端口号 sudo cat /etc/serviceskali@kali:/etc$ sudo cat services # Network services, Internet style## Note that it is presently the policy of IANA to assign a single well-known# port number for both TCP and UDP; hence, officially ports have two entri原创 2020-06-19 17:01:31 · 425 阅读 · 0 评论 -
Linux 下的两个特殊的文件 -- /dev/null 和 /dev/zero 简介及对比
1、概论 -- 来自维基的解释/dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。这些操作通常由重定向完成。/dev/zero : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件转载 2020-06-17 15:41:41 · 473 阅读 · 0 评论 -
apue笔记--第13章 守护进程
守护进程(daemon)是长期存在的一种进程-->在系统引导启动时装入,仅在系统关闭时终止该版本的Linux使用一个名为 kthreadd 的特殊内核进程来创建其他内核进程,所以 kthreadd 表现为其他内核进程的父进程创建守护进程 code 13_1/* 创建守护进程output:kali@kali:~/Desktop/Linux Study/Hellos/Chapter13$ ps -ajx |grep 7014 1 7014 701原创 2020-06-18 12:06:59 · 337 阅读 · 0 评论 -
apue笔记--第11章 线程
比较线程ID:#include <pthread.h>int pthread_equal(pthread_t tid1,pthread_t tid2)获取自身线程ID#include <pthread.h>pthread_t pthread_self(void);原创 2020-06-17 12:18:52 · 245 阅读 · 0 评论 -
apue笔记-第9章 进程关系
终端登录:init进程知道那些终端设备可用来登录,并且为每个设备生成一个getty进程网络登录:为了使同一个软件技能处理终端登录,又能够处理网络登录,系统使用了一种称为伪终端(pseudo terminal)的软件驱动程序。BSD登录中,有一个inetd进程-->等待大多数网络连接。inetd等待TCP/IP连接请求到达主机,当一个连接请求到达时,执行一次fork,然后生成的子进程exec执行适当的程序。进程组pid_t getpgrp()获取进程组id..转载 2020-06-11 21:12:34 · 234 阅读 · 0 评论 -
关于%*.*s
小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。也就是说,前面定义输出总宽度,后面定义输出字符个数。举例:#include <cstdio> #include <iostream> int main() {转载 2020-06-09 16:49:04 · 187 阅读 · 0 评论 -
apue笔记-第8章 进程控制
swapper 进程(系统进程):ID = 0,只负责调度进程,并不执行磁盘上的任何程序init 进程:ID = 1,负责读取与系统有关的初始化文件。init进程不会终止。它是一个普通的用户进程,以超级用户特权运行。/sbin/init...原创 2020-06-11 10:54:57 · 234 阅读 · 0 评论 -
apue 笔记 -第7章 进程环境
第七章 进程环境内存布局通过size 查看 text段,data段,bss段大小kali@kali:~/Desktop/Linux Study/Hellos$ size /usr/bin/cc text data bss dec hex filename 757686 8528 14512 780726 be9b6 /usr/bin/cc获取环境变量 getenv#include <stdlib.h>#inclu原创 2020-06-04 12:19:38 · 247 阅读 · 1 评论 -
《Linux 编程 c》学习笔记--IPC
IPC包括:消息队列、信号量、共享内存IPC特点:1.IPC由内核维护,存放在内核中1.随内核持续,IPC不会自我删除,停止使用的IPC结构会一直保存在内核中,直到内核重启或者显示删除该对象。关键字 key_t:唯一标识一个IPC,可以由ftok()函数生成消息队列:创建消息队列#include <stdio.h>#include <sys/...原创 2019-03-18 13:47:41 · 365 阅读 · 0 评论 -
Linux 内核设计与实现笔记 -- 数据结构
转自:https://zhuanlan.zhihu.com/p/58087261链表这里很重要的一点:Linux是把链表节点嵌入到数据结构中,链表节点不含任何数据!Linux内核链表实现单向链表和双向链表在实际使用中有一些局限性,如数据区必须是固定数据,而实际需求是多种多样的。这种方法无法构建一套通用的链表,因为每个不同的数据区需要一套链表。为此,Linux内核把所有链表操作...转载 2019-08-17 18:47:05 · 566 阅读 · 0 评论 -
shared_ptr的线程安全性
shared_ptr的线程安全性shared_ptr的reference count是线程安全的,但是指向的对象不是线程安全的!本文链接:https://blog.youkuaiyun.com/D_Guco/article/details/80155323 shared_ptr的出现在某种程度上解放了c++程序员,c++11标准原生的支持了并发编程,在并发编程中shared...转载 2019-08-22 23:52:14 · 5299 阅读 · 0 评论 -
Linux -- 进程(二)-- 进程描述符 task_struct 和进程状态
参考:《Linux内核的设计与实现》内核把进程的列表存放在叫做任务队列(task list)的双向循环链表中。链表中的每一项都是一个task_struct,即进程描述符的结构task_struct中的数据能够完整描述一个正在执行的程序:它打开的文件进程的地址空间进程的状态挂起的信号等 ..Linux进程的状态有5种:1.TASK_RUNNING(运行)...原创 2019-09-05 20:50:35 · 1102 阅读 · 0 评论 -
《Linux 编程 c》学习笔记--管道
管道是半双工的,通常来说,只能在具有相同祖先的进程间使用,例如(父子进程,兄弟进程)数据读出后,管道中就没有数据了。管道操作符:|格式:命令A | 命令B | 命令C... | 命令N前一个命令的输出作为后一个命令的输入例如:kill - l | grep SIGKILL在信号列表中查找SIGKILL管道结构:注意!管道位于内核缓冲区,用环形队列来实现...原创 2019-03-17 18:58:48 · 367 阅读 · 0 评论 -
《Linux 编程 c》学习笔记--信号
Linux共有64个信号类型:信号分类:1.不可靠信号(非实时)编号1~31的信号,不支持排队,可能造成信号丢失2个特殊信号:SIGSTOP(19) : 中断进程的执行,对应键盘的输出为“Ctrl +C”SIGKILL(9) : 强制进程退出,对应键盘的输出为“Ctrl +\”SIGSTOP和SIGKILL不允许被捕捉,忽略或者阻塞!2.可靠信号 (实时)编...原创 2019-03-17 00:17:02 · 230 阅读 · 0 评论 -
printf缓冲问题与 exit(),_exit()
转自:https://blog.youkuaiyun.com/shanshanpt/article/details/7385649Linux中有缓冲IO,对应于每个打开的文件都会有一片缓冲区。每次写文件时都会写入到内存中的缓冲区,等到满足一定条件时,(例如缓冲区已满,或遇到特定字符,如"\n"),再将缓冲区的内容一次性写入文件。printf有行缓冲例子1,行缓冲没满,没有\nprintf("...转载 2019-03-16 19:59:55 · 541 阅读 · 0 评论 -
Linux vfork()
转自:https://blog.youkuaiyun.com/jianchi88/article/details/69853261.vfork()创建子进程,在调用exec()之前或exit()之前,子进程与父进程共享数据段(与fork()不同,fork要拷贝父进程的数据段,堆栈段)2.调用vfork()后,子进程先执行,父进程被挂起,直到子进程调用了exec或exit之后,父进程才执行。例...转载 2019-03-16 17:51:25 · 1184 阅读 · 0 评论 -
Linux -- fork() 写时拷贝(copy-on-write)
参考:《Linux内核设计与实现》Linux 的fork()使用写时拷贝页来实现!写时拷贝:是一种推迟或者免除拷贝的技术。内核fork()时并不复制整个进程地址空间,而是让父子进程共享一个地址空间---》只有在需要写入时,数据才会被复制,从而使各个进程拥有各自的拷贝数据。也就是说,只有在需要写入的时候才复制资源,在此之前,以只读方式共享。比如:父进程fork()后,子进程立即e...原创 2019-08-17 10:34:00 · 1023 阅读 · 0 评论 -
epoll,select,poll
https://blog.youkuaiyun.com/qq_35976351/article/details/85228002man epoll综述首先要搞明白两个基本概念:I/O复用和(非)阻塞机制。I/O复用指的是允许计算机执行或者阻塞在一组数据流上,直到某个到达唤醒阻塞的进程,此时的I/O信道不仅仅是通过一个数据流,而是一组,所以是复用。阻塞和非阻塞:拿I/O为例子...转载 2019-08-15 23:20:36 · 781 阅读 · 0 评论 -
Linux swap分区
转自:https://segmentfault.com/a/1190000008125116什么是swap?swap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到...转载 2019-08-11 21:26:35 · 19321 阅读 · 0 评论