可爱小蛇
type: channel
link: https://blog.cutesnake.top/
description: 可爱可爱小小蛇
items: 【维护】SSL证书更新
items: 【日常】公网远程串流画质流畅度测试，测试游戏：鸣潮无ui最高画质，方案：Windows端sunshine+mac端moonlight
items: 网站日常维护：ssl证书更新
items: 2023C++底层人士面试总集
items: PAT2023夏季甲级简略c++题解
items: vim命令速查
items: 2023还是不会的数据结构与算法题集结
items: 力扣每日一题 April, 2022
items: 网站日常维护：Gitee图床崩溃，改用阿里云OSS；维护自动邮件系统
items: CMU15-213 Shell lab

【维护】SSL证书更新
type: item
date: 2025-03-28T13:47:00+08:00
description: 90 days renewalMy network flow direction:China Mainland -> Hong Kong -> direct out -> (for special traffic) forward to US serverRemember to renew SSL certificate of blog.cutesnake.top. Otherwise, internet traffic forwarding to US server would fail because of SSL verication failure. Use the following command:cd ~ cd .acme.sh acme.sh --issue -d blog.cutesnake.top --webroot /www/wwwroot/blog.cutesnake.top/ --force (correct output) [Fri Apr 11 23:55:29 CST 2025] Using CA: https://acme-v02.api.letsencrypt.org/directory [Fri Apr 11 23:55:29 CST 2025] Single domain='blog.cutesnake.top' [Fri Apr 11 23:55:30 CST 2025] Getting webroot for domain='blog.cutesnake.top' [Fri Apr 11 23:55:30 CST 2025] Verifying: blog.cutesnake.top [Fri Apr 11 23:55:31 CST 2025] Pending, The CA is processing your order, please just wait. (1/30) [Fri Apr 11 23:55:34 CST 2025] Success [Fri Apr 11 23:55:34 CST 2025] Verify finished, start to sign. [Fri Apr 11 23:55:34 CST 2025] Lets finalize the order. [Fri Apr 11 23:55:34 CST 2025] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/1835370607/373098431387' [Fri Apr 11 23:55:35 CST 2025] Downloading cert. [Fri Apr 11 23:55:35 CST 2025] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/05cf367e4d70556b0e080b83a9c38aaf74f3' [Fri Apr 11 23:55:36 CST 2025] Cert success. -----BEGIN CERTIFICATE----- acme.sh --install-cert -d blog.cutesnake.top acme.sh --install-cert -d blog.cutesnake.top --key-file /www/server/panel/vhost/cert/cutesnake.top/privkey.pem --fullchain-file /www/server/panel/vhost/cert/cutesnake.top/fullchain.pem --reloadcmd "service nginx reload" systemctl restart xray systemctl status xrayNo need to renew other websites (etc: secretbase) using this method. I can renew those websites using BT Panel. Why blog.cutesnake.top is so special? Because I specifically configured some xray fallback mechanism on this website. View other ariticle in this blog for more information about xray fallback mechanism.

【日常】公网远程串流画质流畅度测试，测试游戏：鸣潮无ui最高画质，方案：Windows端sunshine+mac端moonlight
type: item
date: 2025-02-16T19:17:00+08:00
description: 很久没更新了，开始打工以后好忙，同时在玩5款二游，基本时间都吃完了，在考虑这个博客以后该更新些啥。公网串流前提：已经操作过局域网串流准备工作：1，确认发送端和接收端都具备IPv6地址（如果有拓展路由器，也要检查IPv6设置是否开启）。2，准备好域名，发送端配置ddns-go开机自启，ddns-go设置里IP获取方式为网卡（建议不选临时IPv6地址，换的太频繁了，域名刷新很浪费时间）。只要长期离开发送端的话且选用IPv6的方式这一步就是必做，因为IPv6地址会变化，接收端想确认发送端IPv6地址，只能通过域名解析。如果不选用IPv6，似乎还有个叫皎月连的IPv4方案，我未实践所以不了解，仅作提供思路用。3，购买米家智能插座，主板bios设置通电开机。提前在手机上的moonlight配对好发送端的sunshine备用。开始接收：米家APP控制上电，开机自启ddns-go和sunshine（如果需要更新域名映射，视dns供应商更新快慢，有15分钟~2小时左右延迟）。可以在这个网址查看发送端端口情况：https://www.itdog.cn/tcping_ipv6。通过在发送端已经连接好的设备（手机）使用Monnlight连接后，输入新设备Moonlight发送的PIN码，即可连接新设备。发送端：地址：浙江软件：sunshine系统：Windows配置：cpu 7950x3d, gpu 4090d网络：500兆联通宽带，网线直连电脑（PS：一般而言500兆宽带指下载网速500Mbps，上传网速运营商一般会砍到十分之一左右，我这边情况是上传达到6、70Mbps，也就是8MBps左右。用木桶原理来说的话，这个8Mbps就是决定画质的最低的那块板。能支持到的程度是1440p120帧流畅，4K60帧很卡且频繁提示降低码率，4K120帧基本动都动不了）moonlight:地址：广东软件：moonlight画质：3024*1890，60fps系统：MacOS配置：MacBookPro 21年14英寸，芯片M1 Pro网络：千兆移动宽带，光猫接路由器，经拓展路由器发射WiFi感想：太浪费时间了，不建议折腾。原本是想过年回家带笔记本也能高画质玩游戏，从花费的时间精力来看是不如在老家也配台新电脑……比较麻烦的地方在于：1，对大多数人来说IPv4就够用了，所以宽带师傅对IPv6基本就很不上心，基本等于要自己光猫路由器都捋一遍（发送端配好以后找了两三个朋友帮忙测接收端能不能收到，基本都因为没有IPv6没法测了）。幸好所有手机网络都自有IPv6地址吧，发现这一点后至少我能用手机测测了。2，开机方案：开机卡完全不好使，因为不清楚开机卡提供方用的服务器靠不靠谱。建议还是米家插座吧，至少莫名其妙连不上的时候还能暴力断电，确认当前处于关机状态。3，方案不稳定，网络状态千变万化，刚刚开机连不上，连上了挂机一会又连不上，总之就是已知的未知的各种原因导致连不上的情况非常常见，虽说等待能解决大部分问题，但不得不说还是十分坐牢。对时间要求高的，事务较紧急的，强烈不建议采用此方案。不过至少也是有两点收获：1、证明IPv6公网串流这种方案可行（从1月25日离开浙江到达广东，一直到1月31日都能连接上，期间经历了IPv6地址刷新2次，莫名其妙连不上还是比较折磨，所幸域名刷新后都还能连上）2、再也没有配置焦虑了。再烂的设备，装有Moonlight的u盘一插，照样能玩全最高画质的游戏、指挥4090d训练模型、漏在家的文件传一传。只要网络好（不过这个要求可能也太高了，要求IPv6，懂的都懂，到头来可能还是要靠手机热点……orz）。可能考虑写篇博客。https://www.bilibili.com/video/BV1ufF7e4ELa

网站日常维护：ssl证书更新
type: item
date: 2024-07-14T03:13:00+08:00
description: 又是被Linux权限困扰的几小时……给了点777，应该不会有什么安全隐患吧……算了，小破网站搞搞就烂，反正我也防不住，干脆不防了。acme签发由zero ssl改Let's encrypt。顺便维护了下xray的流量fallback，端口什么的终于对上了，之前头疼了几个月，这次可算是全部搞懂了。https://xtls.github.io/document/level-1/fallbacks-lv1.htmlLast login: Sun Jul 14 01:47:11 on ttys001 cutesnake@192 ~ % ssh root@66.42.100.165 root@66.42.100.165's password: Last login: Sun Jul 14 01:47:49 2024 from xx.xx.xx.xx -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory manpath: can't set the locale; make sure $LC_* and $LANG are correct [root@vultr ~]# acme.sh --issue -d blog.cutesnake.top --webroot /www/wwwroot/blog.cutesnake.top/ acme.sh --issue -d secretbase.cutesnake.top --webroot /www/wwwroot/secretbase.cutesnake.top/ acme.sh --issue -d cutesnake.top --webroot /www/wwwroot/cutesnake.top/ [Sun Jul 14 01:49:59 CST 2024] Unknown parameter : acme.sh [root@vultr ~]# ls [root@vultr ~]# cd .. [root@vultr /]# ls bin etc lib64 mnt proc sbin srv tmp www boot home lost+found opt root srs ssl usr dev lib media patch run srs.log.sys sys var [root@vultr /]# cd root [root@vultr ~]# ls [root@vultr ~]# cd .acme.sh [root@vultr .acme.sh]# ls account.conf ca acme.sh cutesnake.top_ecc notify acme.sh.csh deploy secretbase.cutesnake.top_ecc acme.sh.env dnsapi blog.cutesnake.top_ecc http.header [root@vultr .acme.sh]# acme.sh --issue -d blog.cutesnake.top --webroot /www/wwwroot/blog.cutesnake.top/ acme.sh --issue -d secretbase.cutesnake.top --webroot /www/wwwroot/secretbase.cutesnake.top/ acme.sh --issue -d cutesnake.top --webroot /www/wwwroot/cutesnake.top/ [Sun Jul 14 01:55:34 CST 2024] Unknown parameter : acme.sh [root@vultr .acme.sh]# [root@vultr .acme.sh]# .acme.sh --issue -d blog.cutesnake.top --webroot /www/wwwroot/blog.cutesnake.top/ acme.sh --issue -d secretbase.cutesnake.top --webroot /www/wwwroot/secretbase.cutesnake.top/ acme.sh --issue -d cutesnake.top --webroot /www/wwwroot/cutesnake.top/ -bash: .acme.sh: command not found [root@vultr .acme.sh]# bash acme.sh --issue -d blog.cut…

2023C++底层人士面试总集
type: item
date: 2023-07-03T21:23:00+08:00
description: 水平很次，成绩很差，没有拿到毕业证（差一门课学分要明年重修成功才能拿到），非本专业转码，无项目，找工作也晚，属于debuff拉满的底层人士。可能唯一好点就是学校牌子在这边比较好用（说起这点真是汗颜，高中的努力居然有这么长远的帮助，要说现在我感觉我根本不配这个牌子）。所以主要面的小厂。卓漫科技 2023.6.29第一次线下面试，机会由hr主动联系提供，面试岗位是算法工程师。我提前了20分钟到，到了以后给了份个人信息表和一些模型训练相关的问题（全都不会），这时已经感觉很不妙了。等了40分钟面试官才出现。由一个3,40岁天大的学长和hr共同面试，由于我人工智能一窍不通，很明显气氛很尴尬。学长看了我简历半天，问了我几个问题：1，c和c++有什么区别？答：c++是c的超集，c++好像还有面向对象特性，其他不知道。2，c和c++有哪些传值方式，有什么区别？答：不会。复盘：值传递，指针传递，引用传递。c没有引用传递。3，这个是c里面最基础的东西啊……这样吧，我再问问……（考虑一会）算了不问了，好像不太幸运没考到你会的啊。那讲讲你的故事吧，你擅长什么？答：（支吾）自学英文课程的计算机基础课，考了PAT，主要考试内容是数据结构。4，你讲那么多我可以概括说英语比较好是吧。答：嗯，大概是的……5，你学过的计算机专业课主要学了什么？答：数据结构和算法，链表啊，二叉树啊，迪杰斯特拉算法这些。6，介绍一下链表和跳表吧。答：链表就是一个个节点连接在一起，跳表不会。7，（沉默了一会）对我们有什么问题。问：您前面问的c和c++有什么区别……答：（打断）这个我们今天就不讨论技术了吧，主要是你对我们公司有没有什么问题……答：没有……8，你应该参加面试比较少吧，我给你个建议就是你要好好做好准备再来面试，至少你引导面试官问的东西你得会，不要这样挥霍机会了。9，hr问了一些问题，略。10，那就到这里吧，有消息我们会进一步通知你的。（结束了，20分钟不到）总结：面错岗位了，很难受。上来先给份人工智能的题，什么对什么参数有什么看法，有什么心得之类的，直接交白卷。面试官上来三板斧把我干懵了，我真的对c是一点也不会。传值方式我三种都用了无数遍了，但是我不知道它们具体叫什么……引导也有问题，数据结构与算法里面我比较自信的是dfs这块，链表跳表完全没复习。面试前重点突击c++语言特性继承多态封装一点没问。总的来说还是面错岗位了，气馁了一晚上。宇视科技 2023.6.30公司挺大挺正式的，做的是安保方面，有特别的保密要求背包不能带进办公区。应聘岗：前端一部嵌入式开发一面面试官三十岁左右，给我印象挺好的，给了份卷子，有几道题：1，写出下列数据类型占几个字节：char, int, short，如果在一个struct里，这个struct占几个字节.答：1,4,2,7复盘：7不对，应该是122，函数传值题3，简介strncpy和memcpy（不会）4，简单指针题做完以后，面试官说大概都是对的（指出了第一题7的错误，然后我想起来应该是最长端对齐）。做完以后问了点项目，因为我自己也没吃透我简历上的项目，总之就是一问三不知。唉……问题有：1.内存泄漏了解过吗。答：指针管理不当会内存泄漏复盘：内存泄漏（Memory Leak）是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放，造成系统内存的浪费，导致程序运行速度减慢甚至系统崩溃等严重后果。2.Linux有哪些操作？怎么删除文件夹？怎么编辑文档。答：ls列出文档，rm -rf，编辑我一般用vim。3.介绍一下你简历里面搭建的服务器，有什么功能。答：（支吾）利用socket，实现一个前端输入命令后端作简单反应的功能。4.介绍一下socket编程服务端和客户端有什么操作。复盘：然后让写个排序吧，随便哪种都行。很意外要写这个，很生疏，写了半天写了个冒泡，因为白纸写code又紧张又不习惯还把判断给漏了，最终也不知道代码写完有没有什么问题。面试官倒是也没说啥。很怪，这种题我平时正眼都不会看一眼的，居然卡得我这么狼狈。5.有什么问题吗？问：我看岗位上是前端一部，又是嵌入式开发，这个和前端有什么关系？答：我们做安保的。比如说监控摄像头，控制它转动，那部分代码就是前端负责的。问：网络编程在工作中有什么应用？答：摄像头数据流向后端传播要用到。二面面试官很拽。（问了一些学业方面的问题，以及pat是什么）1.写下反转链表。力扣有写过吧。答：力扣写过，原题不记得写没写过了。（写了很久，快写完时被打断了，说没时间）2.先序遍历是什么，写一下。（很快写完）3.给int a,b;把a的第二个字节赋值给b的第一个字节。b=(a>>8) & (0xFF)（0xFF那里原来写的是511，面试官说我看不懂你换种写法，然后答错了两遍才答对，忘记F是4个bit了）三面hr面，问了些…

PAT2023夏季甲级简略c++题解
type: item
date: 2023-06-12T17:04:00+08:00
description: ​A-1 Trap分数 20A robot is designed to move on a map from South toward North. When some obstacle is encountered, the robot can only turn toward West and moves until it can turn toward North and continue.Given a squared map with n×n blocks, a robot can start from any position below the bottom line (South) and its target is to reach the top line (North). (By the way, kindly remind you that the left-hand-side of the map is West and the right-hand-side is East.)If some obstacles are placed in the map, the robot might get trapped if it starts from certain positions and can never reach the North line. For example, in the situation given by the following figure, the robot will be trapped if it starts from either position 7 or 8.Your job is to point out those starting positions which will get the robot trapped.Note: it is assumed that a robot can move out of the map boundary, and all the blocks around the map are open, without any obstacle. Hence if the robot starts from any position out of the West or East boundary, it can certainly reach North without any problem. Therefore we only have to consider the positions between the West and East boundaries (e.g. the positions from 1 to 10 below the South line in the above figure). Besides, as long as the robot can reach the North line, it is considered successful even of it ends up at out of the boundary (e.g. the robot will have to move out of the map if starts from either the positions 1 or 2, but it can still reach the North line).Input Specification:Each input file contains one test case. Each case starts from a positive integer n (≤100) in a line, which is the size of the map. Then n lines follow, each contains n characters, which are either 0 for an open block, or 1 for a block with obstacle. The first line corresponds to the North boundary and the last line the South.Output Specification:Output in a line all the starting positions which can get the robot trapped, in increasing order. The positions are indexed from West to Ea…

vim命令速查
type: item
date: 2023-01-20T11:22:00+08:00
description: 速查常用vim命令https://vimhelp.org/:w save:x :wq save and quit:q! quit not save/string find "string", use n/N to find next/previous one:{作用范围}s/{目标}/{替换}/{替换的标志} 作用范围：%所有行第一次，'<,'>可视范围 替换标志：i 大小写不敏感，I 大小写敏感，g全局 h左 j下 k上 l右 yycopy line p paste u undo ctrl + r redo

2023还是不会的数据结构与算法题集结
type: item
date: 2023-01-06T10:51:00+08:00
description: 我的力扣主页：https://leetcode.cn/u/cutesnake/我的PAT仓库：https://github.com/suchacutesnake/pat2023.1.1然而竞赛积分还是掉了1分……做太慢也不行吗……2023.1.6花了很多时间，还是好菜，难受~~PAT 1064 Complete Binary Search Treehttps://pintia.cn/problem-sets/994805342720868352/exam/problems/994805407749357568难点：1.对于以层序遍历数组表示的树，如何进行各种遍历。2.对BST，中序（左根右）遍历结果是递增的。3.对CBST的某一节点i，其左右子树分别表示为2i，2i+1。Leetcode 1803. Count Pairs With XOR in a Range (hard)https://leetcode.cn/problems/count-pairs-with-xor-in-a-range/字典树。答案都看不懂，可以竞争我遇到过最难的力扣题。倒不是不明白字典树这个数据结构，就是想不明白为什么要用字典树？？？有没有人来教教我啊~~~2023.1.9Leetcode 6306. Time to Cross a Bridge (hard)https://leetcode.cn/problems/time-to-cross-a-bridge/周赛327场的hard，比起力扣感觉更像PAT的题目，涉及很繁琐的数据结构设计。周赛做完T3只剩10分钟了，时间不够就没做。这种复杂的模拟题对大家来说原来都很困难，头一次见到周赛接近半小时大佬们才全通的。2023.1.11Leetcode753. Cracking the Safe(hard)https://leetcode.cn/problems/cracking-the-safe/初见欧拉回路题，只能看答案。算法看明白了，但是代码实现是怎么做到的看不明白……2023.1.14Leetcode 1819. Number of Different Subsequences GCDs (H)https://leetcode.cn/problems/number-of-different-subsequences-gcds/比较有趣的暴力枚举，杂了一点数学2023.1.16题外话，前几天折腾xray，第一次GitHub上交了pull request，秒merge了，还挺兴奋的。2023.1.18Finding MK Average (H)https://leetcode.cn/problems/finding-mk-average/很多讨论的有序集合+队列题， 奋斗数小时后tle，耻辱看答案。不是自己写的代码真的不想cv提交啊，这每日一题打卡不打也罢！明明就是不会嘛，不会的题却显示通过给一种自欺欺人的感觉……评论区acm爷普遍用的树状数组，我什么时候能学学这个数据结构啊……2023.3.23https://leetcode.cn/problems/word-ladder-ii/solution/dan-ci-jie-long-ii-by-leetcode-solution/要做吐了，错了一遍又一遍，到后面几乎和题解一模一样的写法就差cv了，还是超时。时间复杂度肯定是一样的，卡剪枝了，好难受啊真的好难受。错误的代码先贴着。class Solution { public: void backtrack(unordered_map<string, unordered_set<string>>& from, vector<vector<string>>& res, vector<string>& cur, string beginWord) { for (auto& next : from[cur.back()]) { cur.emplace_back(next); if (next == beginWord) { res.emplace_back(cur); reverse(res.back().begin(), res.back().end()); } backtrack(from, res, cur, beginWord); cur.pop_back(); } } vector<vector<string>> findLadders(string beginWord, string endWord, vector<string>& wordList) { unordered_set<string> dict({wordList.begin(), wordList.end()}); unordered…

力扣每日一题 April, 2022
type: item
date: 2022-04-20T20:07:00+08:00
description: 我的力扣主页：https://leetcode-cn.com/u/cutesnake/4.20388中等https://leetcode-cn.com/problems/longest-absolute-file-path/乍一看简单，仔细一想不会做。本来想用遍历，看了答案知道用哈希表，但还是太难办，写了一个小时，wa一次，有点理解屎山是如何堆成的了……class Solution { public: int lengthLongestPath(string input) { int res = 0, curLen = 0, subCnt = 0, n = input.size(); bool isFile = 0; unordered_map<int, int> subNum; for (int i = 0; i < n; ++i) { char& ch = input[i]; if (ch == '\n') { isFile = 0; subNum[subCnt] = curLen; subCnt = 0; continue; } if (ch == '\t') { ++subCnt; } else { if (i && (input[i-1] == '\t' || (input[i-1] == '\n' && subCnt == 0))) curLen = subNum[subCnt-1]; if (ch == '.') isFile = 1; ++curLen; if (isFile) res = max(res, curLen + subCnt); } } return res; } };

网站日常维护：Gitee图床崩溃，改用阿里云OSS；维护自动邮件系统
type: item
date: 2022-04-19T16:56:57+08:00
description: 前几日有朋友来我这留言了，Gmail又发邮件说阻止了可疑的登录，导致应该自动通知我有新回复的SMTP邮件系统又没有工作。上来一看发现Gmail今年5月30日以后就不再支持SMTP等所谓“不安全的应用”了（事实上“允许不安全应用登录”这个按钮我已经手动允许了无数次，每过一段时间它又给我自动关掉，实在太无语了……）。最近美区PayPal也不知道啥原因登不上去了，明明账号密码我都知道，可就是说“不能确定是您本人”，致电过去我又不知道当初乱填了什么样一个英文名……互联网安全已经发展到知道账号密码也无法掌控账号的地步了啊……给我造成了相当的困扰。于是一口气邮箱改用QQ邮箱，各种开关都很方便，清爽搞定的感觉让我觉得Gmail给人的体验到底是什么垃圾，坚持用Gmail的我是什么傻逼。维护博客过程中，意外发现所有储存在Gitee图床的图片都无了……网上搜索一番发现最近一两个月内Gitee开启了放盗链……虽然白嫖是不对，但GitHub给人白嫖那么久还一点问题也没呢（可能微软财大气粗不在乎吧）。https://blog.51cto.com/phyger/5181594 （Gitee图床崩溃的详情）但好好排版的图文，所有图片都挂了实在是难以接受，我的学习笔记，都是我的心血啊！痛定思痛，还是决定花点钱用上阿里云对象存储OSS（Object Storage Service）。为什么不用腾讯云，因为之前也用过腾讯云的产品，体验并不好……以下是参考，非常有用https://blog.csdn.net/weixin_43876186/article/details/116498692一口气买了5年40G的存储量，事实上当时想的是45块也不贵啊……但下午一看，存储量要计费，流量居然也要计费，5毛1G，属实让我有点吐血。大概访问图片不会占用太多流量的吧，这样安慰自己。但是速度属实是快到不行，我的引导页终于可以放上背景视频不用卡了！https://cutesnake.top但是一个1分多钟的1080p的视频，b站上下下来就是30M，转成网页能播放的格式就是80M，好贵，真的有点顶不住。唉，但是耐不住心海真的太好看，不舍得降低画质，为了这个炫酷的引导页更不舍得把视频撤掉……只希望不会有访客专门来我这放视频吧……应该不会有人这么无聊吧……下一步就是Gitee的内容迁移到阿里云OSS上了，好繁杂的工作，想想就不想干了，害……

CMU15-213 Shell lab
type: item
date: 2021-11-20T20:19:00+08:00
description: 2021-11-20 20:18:09 星期六发现我真的是不会c语言……就连最简单的字符串比较都不会，还要上网去查才知道有strcmp这个函数……在对各种c库函数一无所知的情况下，感觉要实现些什么真的举步维艰啊……不过，也真的觉得这次的lab不是很难（可能经过了pat三十多道题的洗礼有进步了），就愈发想要自己独立完成。然而，越是有这样的心，就越在简单的地方（指知识性的地方，了解过就几行搞定，没了解过就卡住的地方）就进行不下去了，到底还是水平太次了orz2021-11-20 22:31:11 星期六看了一下博客，完全是一点也不懂……太硬了，英文课本也看不懂，什么时候才能学下来啊……2021-11-22 20:49:51 星期一一个坑：需要到http://csapp.cs.cmu.edu/3e/code.html 把csapp.h的代码复制然后include进来。开始有点明白了。按着16个trace一步一步走就行。前3个trace照抄课堂上课件的代码即可。![](https://cutesnaketop.oss-cn-beijing.aliyuncs.com/image/gitee-img/Screen Shot 2021-11-22 at 8.48.55 PM.jpg)到trace05卡住了。理论上./myspin 2 & 和./myspin 3 &所分配到的jid应该是1和2，但我这里是2和4。2021-11-26 15:41:05 星期五是2和4的原因在于没有waitfg。把waitfg函数完成即可。2021-11-26 13:20:07 星期五错误：![](https://cutesnaketop.oss-cn-beijing.aliyuncs.com/image/gitee-img/Screen Shot 2021-11-26 at 1.50.14 PM.jpg)Makefile里加上CFLAGS = -Wall -O2 -pthread#include "csapp.h"然后把tsh.c里重复定义的代码都注释掉。test07：信号掩蔽exit总是会把主函数return掉，想要杀掉进程而不退出tsh，用kill。csapp.c里面的Kill支持不了-pid参数，只能用kill。在sigint_handler里用了exit(0)的话，会有以下结果（上面是我的输出，下面是参考输出）：![](https://cutesnaketop.oss-cn-beijing.aliyuncs.com/image/gitee-img/Screen Shot 2021-11-26 at 3.46.22 PM.jpg)如果不掩蔽，则前后台的process都会terminate掉。2021-11-27 12:45:43 星期六![](https://cutesnaketop.oss-cn-beijing.aliyuncs.com/image/gitee-img/Screen Shot 2021-11-27 at 12.46.59 PM.jpg)对test08的jobs命令显示不了Stopped的进程：1，在waitfg里面的waitpid用上WUNTRACED这个option，使得一旦有子进程terminate或者stop都会被watipid捕捉到，再通过WIFSTOPPED(status)（图中用的WIFEXITED，会过不了test07）进行判断，把stopped掉的进程状态设置为ST。![](https://cutesnaketop.oss-cn-beijing.aliyuncs.com/image/gitee-img/Screen Shot 2021-11-27 at 12.53.39 PM.jpg)2，对应handout PDF的Hints最后一条，在合适的位置加上setpgid(0, 0)，使得后台的进程一定拥有一个独立的进程组。2022-01-23 19:40:50 星期日放假了十几天了，捡回来接着做。发现之前直到test09的输出结果都是没问题的，但是进程回收一块完全是一塌糊涂，根本没做，导致所有进程就算结束了也还会在jobs命令下有所显示。还得再看看书。