- 博客(56)
- 收藏
- 关注
原创 持续open未fclose dir产生malloc assertion
某个函数内有open dir操作return前未fclose。打开到64个的时候就出现该错误。
2023-03-27 20:30:06
522
原创 coreutils8.32 users命令和源码分析
执行顺序:判断是否有指定utmp文件,没的话就使用默认的/var/run/utmp,然后使用read_utmp读取utmp文件,然后在遍历读取到的用户名。通过utmp(/var/run/utmp)获取当前登陆用户,utmp不存在就使用wtmp(/var/log/wtmp)用户操作记录文件来获取。核心函数:read_utmp定义在utmp.h 读取utmp文件。如果多次同一用户名,就是这个用户同时存在多个会话。命令功能:显示当前所有的登陆用户。users的操作数是指定文件获取。
2022-11-01 11:34:52
200
原创 coreutils8.32 dirname命令和源码分析
核心函数:dir_len获取操作数前缀,定义在dirname-lpgl.c。命令功能:获取文件的相对路径。
2022-11-01 11:27:29
272
3
原创 coreutils8.32 tty命令和源码分析
使用了-s选项会检查STDIN_FILENO是否存在,存在就返回EXIT_SUCCESS不输出任何消息,只打印状态掩码的退出。不存在就返回TTY_STDIN_NOTTY退出。由文件描述符查出对应的文件名(在这里传入STDIN_FILENO用来获取当前进程的tty)核心函数: isatty函数检查给定的设备类型(在这里用于检查标准输入是否存在)tty -s 可以于检查标准输入是否存在。命令功能:默认输出tty名称。
2022-10-27 21:12:32
225
原创 coreutils8.32 nproc命令和源码分析
* 执行流程:默认将用于获取进程可用cpu数的常量(NPROC_CURRENT_OVERRIDABLE)赋值到mode。(如果开启了--all就将mode切换成查询cpu总数(NPROC_ALL))。如果开启了--ignore就调用xdectoumax减少进程可用cpu总数,然后刚好后面获取cpu数量的函数(就会获取到ignore减少后的进程可用cpu) */命令功能:默认查询进程可用的cpu数,--all查询cpu总数,--ignore xxx是减少x个进程可用cpu数。
2022-10-27 20:45:40
477
原创 coreutils8.32 whoami命令和源码分析
执行流程:先用geteuid获取调用进程的用户uid,再用getpwuid通过uid获取完整的passwd结构再输出用户名。命令功能:显示当前操作用户(不是登陆用户,和logname不一样。登陆用户之后可以su切换操作用户)
2022-10-26 19:50:40
167
原创 apue 4.22 递归目录
#include "apue.h"#include <dirent.h>#include <limits.h>/* 为每个文件名调用的函数类型 */typedef int Myfunc(const char *, const struct stat *, int);static Myfunc myfunc;static int myftw(char *, Myfunc *);static int do.
2021-08-22 02:18:14
151
原创 unix网络编程源码编译
cd unpv13e./configurecd libmake得到的静态文件libunp.a在上一层目录。$ nm -g libunp.a查看符号表 (主要是想看一下这个库的各个源文件调用了哪些Linux系统调用)cd libfreevim inet_ntop.c // 第61行 size_t size ->改成 socklen_t size)makecd ../libgaimakecd ../cp libunp.a...
2021-08-06 21:25:39
436
原创 linux自定义系统变量
vim /etc/profileexport后添加export PATH=$PATH:/usr/local/nginx/sbin添加保存后,刷新profile文件source /etc/profileps:重启后出现用户切换情况sudo -i重新切换root就行了
2021-07-28 01:32:42
209
原创 linux查看进程绝对路径
ps -ef | grep nginx记录进程pidcd /procls找到和pid对应名称的目录cd "pidNumber"ls -lexe和cwd链接符是绝对路径lrwxrwxrwx 1 root root 0 Jul 28 01:15 exe -> /usr/local/nginx/sbin/nginx
2021-07-28 01:20:08
597
原创 linux文件或目录添加权限(chmod)
chmod +777 "filename"以八进制形式表示,八进制的7 等于 二进制 111 所以chmod +777 就是添加文件所有权限r:文件:允许read和write。 目录:能查看目录内容(要有x)w: 文件:允许write或assert,不能mv,rm。 目录:能rm,mv等(要有x)x: 文件:允许以脚本执行。...
2021-07-25 23:41:23
1518
原创 命令行输出不进行参数扩展
here-document 的每一行都要执行参数扩展、命令替换以及算术扩展通过转义结束符任意字符可以让here-document内部不进行扩展操作#没有转义EOF的情况下grep $1<<EOFabc $100def $200ghi $25jkl $9EOF./filename abcabc abc00#转义EOF后grep $1<<'EOF'#grep $1<<\EOF#grep $1<<E\OFab
2021-07-25 00:52:37
88
转载 linux关闭笔记本自带键盘
apt-get install xinputxinput list找到AT Translated Set 2 keyboard,其 id为 13xinput set-prop 13 "Device Enabled" 0 如果想恢复,对应的值设为1即可xinput set-prop 13 "Device Enabled" 1
2021-07-22 19:15:45
293
翻译 ZeroBlog翻译
在本教程中,我们将建立一个P2P,分散,服务器和后端的聊天网站在不到100行代码。(这是对原始教程的简化和纯javascript修改。)创建新站点点击⋮ > “在站点上创建新的空站点”菜单项。 你将被重定向到一个全新的网站,只有你可以修改! 将右上角的“0”按钮向左拖动以显示侧边栏 在底部,将站点标题更改为“My ZeroChat tutorial”,然后按“Save Site settings”。聊天网站的HTML代码在您喜爱的编辑器中打开“data/[yoursite.
2021-07-03 19:30:04
177
原创 C++打开utf8输出和输入
类型什么的都用前缀w宽字符,主要是是第九行:保存个类型变量,和12行设置out编码还有19行设置in编码#include <iostream>#include <codecvt>#include <fstream>#include <string>int main(void){ using namespace std; auto LocUtf8 = locale(locale(""), new codecvt_utf8<...
2021-05-16 12:39:19
1763
原创 Unix环境高级编程 源码编译
1、下载源码:http://www.apuebook.com/src.3e.tar.gz2、解压并进入解压后的目录:tar-zxvf src.3e.tar.gz.tar.gzcd apue.3e3、进入后直接输入:make4、cp头文件cp include/apue.h /usr/include/ cp lib/libapue.a /usr/local/lib/cp lib/libapue.a /usr/lib/5、进入intro找到第一个列子ls1.
2021-04-24 00:22:48
141
转载 makefile中addprefix函数
$(addprefix PREFIX,NAMES…)addprefix 是makefile中的函数,是添加前缀的函数例如:$(addprefix src/,foo bar)返回值为“src/foo src/bar”.所以上面的意思是为dirver_dirs变量添加前缀,$(DRIVERS_DIR)/
2021-01-31 12:49:24
5433
原创 boost库安装,安装后没有头文件
官网下载:boost.org解压:tar xvfzboost_1_75_0.tar.gz解压后:cdboost_1_75_0 // 进入解压后的目录./bootstrap.sh // 编译./b2 --buildtype=completeinstall // 完整安装安装好后:头文件默认位置:/usr/local/include库文件默认位置:/usr/local/lib注意!!!安装好后查看头文件目录和库文件目录有没有boost相关的文件...
2021-01-28 02:51:38
2603
转载 kali拓展硬盘
首先关机,然后找到虚拟机设置-硬盘-扩展磁盘容量-指定一个大小 成功的话会提示你要再虚拟机内对磁盘进行挂载和分区操作 开机 执行/bin/sh /usr/lib/udisks2/udisks2-inhibit /usr/sbin/gpartedbin调出图形化磁盘管理工具Gparted,可以看我这里有 先右键禁用上面夹在中间的交换分区,然后删除 右键选择最上面的硬盘对应未分配的分区,进度条拖动,但是最好留点给交换分区 再将没分配的新建,选择Linux-swap 点击添加后,点击勾号 最后启动
2021-01-24 13:19:51
427
原创 linux install open-vm-tools后/mnt/hgfs为空
安装tools后还要用vmhgfs-fuse挂载vmhgfs-fuse .host:/ /mnt/hgfs
2021-01-23 20:01:52
157
原创 c++链接期obj文件(类源码)(vs自带命令提示符 )
生成 ->解决方案,原文件目录下Debug的 文件名.obj命令提示符切到该Debug目录dumpbin /all 文件名.obj > 保存为.txt例:E:\helloword\Debugobj对象文件名:text_01.objcd E:\helloword\Debugdumpbin /all text_01.obj > text_01.txtRELOCATIONS 类开头obj文件结构百度吧...
2021-01-11 19:36:35
467
原创 c++单个类的模型(vs自带命令提示符 )
cd 进入.cpp目录cl /d1 reportSingleClassLayout类名 "文件名.cpp"例:假设E盘hello下文件名:text.cpp文件内有个类:PeopleE: cd hello “可用 dir查看目录是否正确” cl /d1 reportSingleClassLayoutPeople"text.cpp"...
2021-01-09 15:57:32
121
原创 汇编基础
0000.0001.0010.0011.0100.0101.0110.0111.1000.1001.1010.1011.1100.1101.1110.11110 1 2 3 4 5 6 7 8 9 A B C D E F8位寄存器:AL CL DL BL AH CH DH BH16位寄存...
2020-10-08 16:48:54
303
原创 渗透后台提权后爬取某公司信息
没反爬,某种原因所以 全面向过程import urllib.parseimport urllib.requestimport timeimport threadingdef DiYi(): bianhao = 1 while True: url = 'http://pmsadmin.estay.com/crs/query_order_list?page_index='+str(bianhao)+'&page_size=20&asd=1&as
2020-09-23 05:28:01
498
2
原创 接着反查更多有用信息
调出数据库内存的号码反查sfzimport MySQLdbimport urllibimport urllib.parseimport urllib.requestimport jsonimport threadingimport timedef mysql1(while_id,while_id_two,url_cookie): conn = MySQLdb.connect(host='127.0.0.1', user='root',passwd='root',db='person
2020-08-12 09:06:25
302
1
原创 接上一条 爬完数据后清洗入库
数据用户名有 ’ \ /还有空格的,因为不会python操作sql数据库,直接现学了MySQLdb,入库时过滤做不好,直接跳过这些特殊名称的数据了。import jsonimport MySQLdbimport pymysqlconn = MySQLdb.connect(host='127.0.0.1', user='root',passwd='root',db='personal_information',port=3306,charset = 'utf8') # 连接数据库curs
2020-08-12 09:06:15
213
原创 模块:MySQLdb(操作SQL数据库)
import MySQLdbconn = MySQLdb.connect(host='127.0.0.1', user='root',passwd='root',db='bbc',port=3306,charset = 'utf8') # 连接数据库cursor=conn.cursor() # 创建游标 相当于指针# sql_insert="insert into student values(4,'李科',2)" #sql语句插入一行新值# sql_update="updat
2020-08-11 17:28:30
177
原创 模块:json(格式转换)
import jsondate = “{‘a’:‘A’,‘b’:‘B’}”a1 = json.loads(date)print(a1[1])# 字符串转jsond = {‘first_name’: ‘Guido’,‘second_name’: ‘Rossum’,‘titles’: [‘BDFL’, ‘Developer’],}print(json.dumps(d))‘{“first_name”: “Guido”, “last_name”: “Rossum”, “titles”: [“B
2020-08-11 17:27:08
162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人