tusong86
码龄17年
求更新 关注
提问 私信
  • 博客:395,798
    社区:95
    问答:7,373
    403,266
    总访问量
  • 160
    原创
  • 132
    粉丝
  • 105
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
加入CSDN时间: 2009-04-30
博客简介:

tusong86的博客

查看详细资料
个人成就
  • 获得186次点赞
  • 内容获得129次评论
  • 获得563次收藏
  • 代码片获得2,347次分享
  • 博客总排名2,339,044名
创作历程
  • 5篇
    2025年
  • 10篇
    2024年
  • 19篇
    2023年
  • 56篇
    2022年
  • 46篇
    2021年
  • 30篇
    2020年
成就勋章
TA的专栏
  • sip
    1篇
  • linux
    5篇
  • sofiasip
    2篇
  • qt
    6篇
  • 离线安装
    1篇
  • golang插件
    1篇
  • root
    1篇
  • vscode
    1篇
  • 类型转换
    1篇
  • 字符数组赋值
    1篇
  • 回调函数
  • shell扩展
    1篇
  • QSsh
    1篇
  • vmmap
    1篇
  • gdiplus
    1篇
  • 受限token
    1篇
  • 不受限token
    1篇
  • 用户sid
    1篇
  • BOM
    1篇
  • less
    2篇
  • 交互式服务检测
    1篇
  • windows会话
    1篇
  • windows服务
    1篇
  • 进程环境变量
    1篇
  • 管道
    1篇
  • gcc
    1篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 7

TA参与的活动 0

创作活动更多

AtomGit「码动四季·开源同行」秋季征稿活动

秋季征稿主题:开源成果经验分享 成果不止一种形态,我们为你准备了六大赛道,总有一款适合你: 开源项目成果复盘 把项目一年/一季的成长摊开来看:里程碑复盘、Star 与用户增长复盘、版本迭代复盘、从 0 到 1 的发布复盘。 🖊️ 示范选题: ●开源项目从 0 到 1000 Star,我做对了什么 ●开源一周年,我交出的成绩单 这类文章不只是一次经验分享,也是一张项目名片。欢迎将项目托管到 AtomGit 并申请成为 G-Star 项目,通过后可获得平台流量推荐、项目宣传等权益。(G-Star:AtomGit 最具影响力开源项目) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1f90c61528ad410d8d66f9d0e3707a5a.png) 咨询 G-Star 项目申请 2️⃣ 技术经验体系化沉淀 踩坑合集、最佳实践总结、工具链实战、CI/CD 流水线搭建、代码重构与架构演进。 🖊️ 示范选题: ●提了 50 个 PR 后,我总结的开源协作避坑清单 ●一次重大重构复盘:把单体拆成可维护的模块 3️⃣ AI 赋能开源的实战成果 AI 编程助手实战测评、基于开源模型的微调与应用开发、AI 辅助研发提效流水线。 🖊️ 示范选题: ●我用 AI 编程助手把提 PR 效率翻了 3 倍 ●基于开源大模型搭了个 XX 工具(附完整教程) 4️⃣ 开源共建笔记|文档、社区与布道 开源文档写作与翻译、issue 互助经验、组织 meetup、用开源项目做教学与分享。 🖊️ 示范选题: ●一个优秀开源项目,文档应该怎么写 ●我用开源项目做了个线上 Workshop ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/23e83ceebc594c379f7fc6aa8dcfa40c.png) 扫码加入码动四季投稿交流群,和更多伙伴一起交流技术!

16人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 资源
  • 代码仓
  • 问答
  • 帖子
更多
  • 最近

  • 文章

  • 专栏

  • 资源

  • 代码仓

  • 问答

  • 帖子

  • 社区

  • 视频

  • 课程

  • 关注/订阅/互动

  • 收藏

搜索 取消

gcc链接静态库的时候的最小单位是文件,没有精确到函数

这是因为链接是以文件为单位的,mul函数的实现在mul.c里面,mul.c里面有两个函数:mul和add2,其中add2里面调用了add。可以看到main.c里面用到的mul函数位于libmul.a库里面,位于这里面的mul.o文件的mul函数,而mul函数并没有依赖其他函数(没有依赖add.o,即没有依赖libadd.a)。并不是整个静态库里面的全部的.o文件里面的函数。可以看到main2.c里面用到的mul2函数位于libmul.a库里面,位于这里面的mul2.o文件的mul2函数.
原创
博文更新于 2025.06.08 ·
326 阅读 ·
9 点赞 ·
0 评论 ·
5 收藏

linux下命令行参数都是以空格为分隔的吗

命令行参数是5个,其中第一个参数是mycommand,即命令本身,后面发现不是这样。123 234 456 789这4个合在一起可能是一个参数,主要看调用方怎么写。比如mycommand 123 234 456 789。首先准备一个程序argtest,用于打印命令行参数。一直以来,我以为命令行参数以空格为分隔。
原创
博文更新于 2025.05.19 ·
322 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

linux中如何获取其他进程的退出状态

进程的退出状态至关重要,用wait系列函数,父进程可以捕捉到子进程的退出状态,若给定任意进程,其父进程已经确定,无法改变,自己如何获取到其退出状态呢。
原创
博文更新于 2025.03.26 ·
301 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

linux 进程pid产生的值是多少

当前系统的进程最大值被保存在/proc/sys/kernel/ns_last_pid。linux进程pid是往上增加的,直到遇到系统设置的最大值,然后接着从头开始产生。可以看到新产生的进程id是4054。
原创
博文更新于 2025.03.16 ·
264 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

关于chmod u+s文件所在目录的问题

查看passwd进程的有效用户id和实际用户id,发现有效用户id是root,表明其进程执行时,具有root权限,这样它才有权限修改密码文件/etc/shadow(该文件属于root)。后面自己随意写了一个命令,比如叫setuidtest,所属用户也是root,也给u+s权限。到底放到哪些目录下才有root权限,哪位大神,请不吝赐教,告知下里面的门道。
原创
博文更新于 2025.02.27 ·
494 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

glibc中xdr的一个bug

本人是64位的gcc编译器,long类型是8个字节,所能表示的数字范围远远大于4294967295。本人在64位linux服务器上(centos7),发现xdr_u_long这个函数有个bug,就是数字的范围如果超过unsigned int的最大值(4294967295)时,xdr_u_long失败。经过测试,xdr_u_long所能编码的最大值为4294967295,此时间戳对应的时间大概是2106年。而uint64_t和u_long的类型是一致的,都是unsigned long int。
原创
博文更新于 2024.10.26 ·
600 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

c++中引用是通过指针的方式实现

可以看到,红色方框圈里来的有两部分,其中第一部分是栈帧大小的圈定,bp是栈底,sp是栈顶,由于栈是自顶向下生长,所以sp其实比bp小。红色部分的3部分,第一部分是栈帧大小的开辟,第二部分是栈帧数据的初始化,第三部分是首先将x的值赋给eax,然后将0Ah,即数字10,赋给eax所指的内存单元,即x所指的内存单元。第一步,lea eax,[a]是指将a的地址赋给eax,第二部push eax,这步是参数压栈,而eax目前的值是a的地址,故压栈的参数就是a的地址。然后按F11,进入到fuzhi函数的汇编代码处。
原创
博文更新于 2024.09.17 ·
510 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

关于setrlimit RLIMIT_STACK的一点说明

main函数栈帧的限制在编译的时候就确定了,是8M。故main函数中设置的栈大小为1M,在后面的函数print中生效。而print函数中定义了2M大小的栈变量szBuf,在main函数真正调用print时,会先进行栈限制检查。下面代码,设置栈大小为1024字节,然后后面又定义了2 * 1024的数组,并在print也定义了2 * 1024的数组,但是程序并没有崩溃。可以看到进程崩溃了,但是可以看其打印,print打印出来的,这说明崩溃的时候,是在进入print崩溃的。不是在main函数里面崩溃的。
原创
博文更新于 2024.09.16 ·
697 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

fork出的子进程,调用exec函数后,其信号处理函数会被继承吗

首先需要说明的是,exec后,子进程和父进程属于不同的代码段。信号处理函数不会被继承,但是某些针对信号的设置,还是可以传递的,比如exec前,设置信号处理为SIG_IGN,则exec后,该信号依然保持SIG_IGN属性。该程序名叫做forktest3,终端上运行./forktest3 &;放入后台运行,可以看到后台有两个进程:forktest3和sleep 1000。设置后,尽管后面调用了exec,但是该信号设置依然有效。然后关闭掉终端,可以发现forktest3消失了,但是sleep 1000还在。
原创
博文更新于 2024.08.15 ·
302 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

linux 父进程退出时,激活了子进程的情况说明

针对第二种情况,为何子进程会退出,这里做简单说明,杀掉父进程后,子进程会接收到SIGHUP信号,而此信号,子进程没有处理,则默认结束子进程;此时暂停子进程,然后杀掉父进程,则子进程被激活,并且不会退出。今天在此记录一下几种情况。
原创
博文更新于 2024.08.14 ·
493 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

文件描述符中设置FD_CLOEXEC的用处

linux中,父进程fork出子进程,子进程本身会继承父进程的所有文件描述符。若子进程再调用exec系列函数转化为新的进程实体,其实父进程的描述符对其没有意义。此时文件上只需要设置FD_CLOEXEC即可。注意,如果fork进程后,没有调用exec,则无论FD_CLOEXEC是否设置,子进程一定会继承父进程的全部文件描述符。再运行看看情况,如下所示,产生的两个进程号分别是64187,64188,可以看到文件描述符被子进程继承了。然后查看进程的fd信息,可以看到my.txt这个文件描述符没有继承下去。
原创
博文更新于 2024.08.08 ·
505 阅读 ·
11 点赞 ·
1 评论 ·
3 收藏

linux父进程fork出子进程后,子进程为何首先需要close文件描述符。

考虑到一种情况,父进程创建了tcp服务端套接字,并且listen,此时fork出子进程,若子进程里面不close此监听套接字,则子进程里面是否能接收到客户端的连接。答案是可以的,现在构造一个服务端程序,listen后,fork出子进程,然后父进程进入sleep,子进程调用accept,在accept成功后,打印对应的信息。在linux c/c++编程时,父进程fork出子进程后,子进程经常第一件事就是close掉所有的文件描述符;所以后续父进程fork出子进程后,子进程需要关闭对应的文件描述符。
原创
博文更新于 2024.05.21 ·
686 阅读 ·
1 点赞 ·
1 评论 ·
5 收藏

关于命令行中 < 的代码说明

标准输入
原创
博文更新于 2024.05.21 ·
396 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

当全连接队列满了,tcp客户端收到服务端RST信令的模拟

当tcp服务端全连接队列满了后,并且服务端也不accept取出连接,客户端再次连接时,服务端能够看到SYN_RECV状态。但是客户端看到的是ESTABLISHED状态,所以客户端自认为成功建立了连接,故其写往服务端写数据,发现数据也确实写成功了。但是后面等到服务端通过ACK+SYN告知客户端重新ACK时,发现此时客户端的业务数据已经到来了,故而认为出了问题,故重置连接。其中104代表连接被对端重置。
原创
博文更新于 2024.04.16 ·
453 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

tcp的全连接队列和半连接队列满时,客户端再connect发生的情况

为何ESTABLISHED的数量是3,不是2,即刚好比全连接队列的长度大1,这里本人给出自己的看法,即在最后一个连接(即第3个)建立后,再往accept队列塞的时候,发现队列已经满了,所以就不塞了,但是连接已经建立好了。所以数目是队列的长度+1。为模拟这种情况,可以先将服务端的accept函数注释掉,这样accept queue中的连接无法被消费,从而很快就满了,而且为了快速达到效果,本人在sysctl.conf中,设置net.core.somaxconn=2,即全连接队列的长度为2.
原创
博文更新于 2024.04.09 ·
1583 阅读 ·
18 点赞 ·
0 评论 ·
15 收藏

关于tcp一端断网,另一端的反应

tcp一端断掉时,另一端的反应
原创
博文更新于 2024.01.09 ·
1583 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

linux printf往文件里面写入内容

代码里面,先将fd=1关闭掉,然后open一个文件,出来的文件描述符fd1的值就是1,然后printf向fd为1的文件里面写入东西,执行时,最终可以看到log.txt里面的字符串。为何fsync不行,fflush可以,难道是因为printf和fflush都是stdio.h里面的吗,有大神知道原因的,请不吝赐教。此时相当于疯狂往log.txt里面写入,很快发现log.txt文件很大。最后将fsync(fd1);此种请看下,程序一直在运行,每隔1秒写入一行内容,但是可以发现log.txt中看不到任何内容。
原创
博文更新于 2023.11.21 ·
950 阅读 ·
0 点赞 ·
5 评论 ·
1 收藏

AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比(二)

由于测试时发送的是1.15G大小的文件,比较快就发送结束了,而且读文件,写文件是个比较费时的操作,本人考虑到读写文件费时的影响,决定发送端自己构造字符串,接收方只统计接收到的字符个数,并不写文件。然后发送端发送100秒,对比下100秒之内,AF_UNIX和回还地址接收到的字节个数。然后利用的是发送端读取大文件,接收方接收并保存为文件的方式进行测试,结果发现,AF_UNIX并未比127.0.0.1(AF_INET)回环地址优秀,若单次发送的字节数少时,回环地址反而更快。
原创
博文更新于 2023.10.09 ·
885 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比

本人想当然认为AF_UNIX速度比127.0.0.1更快,为此鄙人进行了实验。2. 用127.0.0.1写客户端和服务端,由客户端读取文件,发送给127.0.0.1服务端,然后服务端写文件,看看用127.0.0.1传递一个文件需要多久。用AF_UNIX写客户端和服务端,由客户端读取文件,发送给AF_UNIX服务端,然后服务端写文件,看看用AF_UNIX传递一个文件需要多久。今天发现linux服务端创建socket的时候,协议族用AF_UNIX即可,AF_LOCAL和AF_UNIX的值是一样的。
原创
博文更新于 2023.10.08 ·
1432 阅读 ·
1 点赞 ·
7 评论 ·
2 收藏

criu简单例子

linux dump功能
原创
博文更新于 2023.10.07 ·
607 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多