服装工厂做网站的好处网站开发的抓包

张小明 2026/1/13 11:52:40
服装工厂做网站的好处,网站开发的抓包,网站改版思路,广告公司取名大全进程相关知识点1. 进程的含义进程是一个正在执行的程序实例#xff0c;是操作系统进行资源分配和调度的基本单位。关键点#xff1a;PCB#xff08;Process Control Block#xff09;#xff1a;进程控制块#xff0c;Linux中实现为task_struct结构体包含信息#xff1a…进程相关知识点1. 进程的含义进程是一个正在执行的程序实例是操作系统进行资源分配和调度的基本单位。关键点PCBProcess Control Block进程控制块Linux中实现为task_struct结构体包含信息PID进程标识符当前工作路径可通过chdir改变umask文件创建掩码默认0002进程打开的文件列表信号处理设置用户ID、组ID进程资源上限ulimit -a查看2. 进程与程序的区别程序进程静态的代码和数据集合动态的执行过程存储在硬盘中存在于内存中永久存在暂时存在无状态变化有状态变化创建、运行、终止无并发性可以并发执行-竞争计算机资源关系一个程序可运行多次→多个进程一个进程可运行一个或多个程序3. 进程的内存分布0-3GB用户空间进程私有 3-4GB内核空间所有进程共享使用虚拟地址空间通过MMU映射到物理内存1页 4KB4. 进程状态基本三态就绪态→运行态→阻塞态Linux扩展状态R运行态运行或就绪S可中断睡眠态等待事件D不可中断睡眠态等待I/OT停止态暂停Z僵尸态进程终止但资源未回收X结束态5. 进程调度与上下文切换内核核心功能进程调度调度算法RR时间片轮转、FIFO等宏观并行多个进程同时运行微观串行单个CPU同一时间只执行一个进程上下文切换保存当前进程状态恢复另一进程状态6. 进程相关命令# 1. 查看进程信息 ps aux ps -ef # 2. 动态查看进程 top htop # 3. 终止进程 kill -信号 PID killall -信号 进程名 # 常用信号 kill -2 PID # SIGINT中断同CtrlC kill -15 PID # SIGTERM终止默认 kill -9 PID # SIGKILL强制终止7. 进程创建fork#include unistd.h pid_t fork(void);特点一次调用两次返回父进程返回子进程PID0子进程返回0失败返回-1子进程继承父进程的0-3G用户空间副本父进程的PCB副本PID不同文件描述符表从fork()后开始执行示例// 一次fork生成2个进程父子关系 fork(); // 两次fork生成4个进程 fork(); // 生成父子2个进程 fork(); // 每个进程再fork共4个 // 关系父子、兄弟关系8. 获取进程信息pid_t getpid(void); // 获取当前进程PID pid_t getppid(void); // 获取父进程PID9. 进程终止方式正常终止main()中returnexit()C库函数刷新缓冲区执行清理函数_exit()/_Exit()系统调用不刷新缓冲区最后一个线程从main返回最后一个线程调用pthread_exit()异常终止abort()产生SIGABRT信号收到终止信号如kill最后一个线程被取消10. exit函数与状态回收#include stdlib.h void exit(int status); // 库函数 void _exit(int status); // 系统调用 // 注册退出处理函数 int atexit(void (*function)(void));11. 僵尸进程与孤儿进程僵尸进程子进程终止父进程未回收wait孤儿进程父进程终止子进程被init进程收养12. 进程资源回收#include sys/wait.h // 阻塞等待任意子进程 pid_t wait(int *status); // 更灵活的等待 pid_t waitpid(pid_t pid, int *status, int options);status处理宏WIFEXITED(status) // 是否正常退出 WEXITSTATUS(status) // 获取退出状态 WIFSIGNALED(status) // 是否因信号终止 WTERMSIG(status) // 获取终止信号waitpid参数pid -1等待任意子进程同waitpid 0等待指定PID子进程pid 0等待同进程组的子进程pid -1等待指定进程组的子进程options 0阻塞options WNOHANG非阻塞13. exec函数族功能用新程序替换当前进程映像六种变体int execl(const char *path, const char *arg, ..., NULL); int execv(const char *path, char *const argv[]); int execle(const char *path, const char *arg, ..., char *const envp[]); int execve(const char *path, char *const argv[], char *const envp[]); int execlp(const char *file, const char *arg, ..., NULL); int execvp(const char *file, char *const argv[]);区别带l参数列表形式list带v参数数组形式vector带p使用PATH环境变量查找可执行文件带e可传递环境变量数组示例// 方式1参数列表 execl(/bin/ls, ls, -l, NULL); // 方式2参数数组 char *args[] {ls, -l, NULL}; execv(/bin/ls, args); // 方式3使用PATH查找 execlp(ls, ls, -l, NULL);14. system函数#include stdlib.h int system(const char *command);内部实现fork() exec() wait()15. 编程练习示例练习1父子进程同时写文件#include stdio.h #include unistd.h #include time.h #include sys/wait.h int main() { pid_t pid fork(); if (pid 0) { // 父进程 FILE *fp fopen(1.txt, a); for (int i 0; i 5; i) { time_t now time(NULL); fprintf(fp, 父进程 PID%d 时间:%s, getpid(), ctime(now)); fflush(fp); sleep(1); } fclose(fp); wait(NULL); // 等待子进程 } else if (pid 0) { // 子进程 FILE *fp fopen(1.txt, a); for (int i 0; i 5; i) { time_t now time(NULL); fprintf(fp, 子进程 PID%d 时间:%s, getpid(), ctime(now)); fflush(fp); sleep(1); } fclose(fp); } return 0; }练习2waitpid指定回收进程#include stdio.h #include unistd.h #include stdlib.h #include sys/wait.h int main() { pid_t pids[3]; for (int i 0; i 3; i) { pids[i] fork(); if (pids[i] 0) { sleep(rand() % 3); // 子进程睡眠随机时间 printf(子进程 %d 退出\n, getpid()); exit(i); // 退出状态为i } } // 父进程指定回收第二个子进程 int status; pid_t ret waitpid(pids[1], status, 0); if (ret 0 WIFEXITED(status)) { printf(回收进程 %d退出状态: %d\n, ret, WEXITSTATUS(status)); } // 非阻塞回收其他进程 while (1) { pid_t ret waitpid(-1, status, WNOHANG); if (ret 0) { printf(非阻塞回收进程 %d\n, ret); } else if (ret 0) { // 还有子进程运行 sleep(1); } else { // 所有子进程已回收 break; } } return 0; }作业父子进程文件通信#include stdio.h #include unistd.h #include string.h #include sys/wait.h int main() { pid_t pid fork(); if (pid 0) { // 父进程写数据 FILE *fp fopen(data.txt, w); char buf[256]; while (1) { printf(输入内容(quit退出): ); fgets(buf, sizeof(buf), stdin); buf[strlen(buf)-1] \0; // 去掉换行符 fprintf(fp, %s\n, buf); fflush(fp); if (strcmp(buf, quit) 0) break; } fclose(fp); wait(NULL); // 等待子进程 } else if (pid 0) { // 子进程读数据 sleep(1); // 等待父进程先写 FILE *fp fopen(data.txt, r); char buf[256]; while (1) { if (fgets(buf, sizeof(buf), fp) ! NULL) { buf[strlen(buf)-1] \0; printf(子进程读取: %s\n, buf); if (strcmp(buf, quit) 0) break; } usleep(100000); // 100ms } fclose(fp); } return 0; }16.重要概念总结并发vs并行并发多个进程交替执行单核并行多个进程同时执行多核进程分类交互式进程shell、编辑器批处理进程shell脚本守护进程后台服务原语操作fork、exec、wait等是不可分割的原子操作进程关系父子进程、兄弟进程进程组、会话资源管理避免僵尸进程及时wait避免孤儿进程合理设计进程关系文件描述符继承与关闭
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

萧山网站建设xssemwordpress首页链接新标签打开

你是否曾经对着Obsidian的默认界面感到审美疲劳?每天面对相同的黑白配色,笔记管理变成了机械重复的任务。别担心,今天我要分享的这款macOS Big Sur风格主题,将彻底改变你的笔记体验!✨ 【免费下载链接】obsidian-calif…

张小明 2026/1/1 19:17:57 网站建设

企业网站模板下载需谨慎半数留有后门怎么做提货网站

积分系统小程序搭建大概会分为5个步骤:1. 需求分析、2. 系统设计、3. 开发、4. 测试、5. 部署。就这几个步骤起码需要三个人:产品经理、技术人员、测试人员。 如果是只是要搭建自己企业的积分商城,根本没必要自己搭建,因为最后拆…

张小明 2026/1/1 17:16:20 网站建设

柳城网站开发网站建设步骤及推广方法

Font Awesome品牌图标终极完整指南:从零开始快速上手 【免费下载链接】Font-Awesome The iconic SVG, font, and CSS toolkit 项目地址: https://gitcode.com/GitHub_Trending/fo/Font-Awesome 还在为网站设计中的品牌标识而烦恼吗?Font Awesome品…

张小明 2026/1/6 4:08:35 网站建设

免费大空间网站wordpress window部署

在IT行业,35岁似乎成了一个分水岭。许多程序员在这个年龄开始焦虑,担心自己的职业生涯会因年龄增长而走向下坡路。但确实到了这个年纪竞争力会快速下降,薪资收入长期停滞甚至下降。 还有一部分过了35岁真的就失业了。知乎上很多人认为这么说就…

张小明 2026/1/2 17:13:55 网站建设

网站建设页面设计做网站游戏都需要什么

在当今AI技术快速发展的时代,开发者面临着前所未有的挑战。不同的AI框架各有优势,但同时也带来了严重的碎片化问题。Ivy框架的出现,为这一困境提供了革命性的解决方案。 【免费下载链接】ivy The Unified AI Framework 项目地址: https://g…

张小明 2026/1/10 12:13:49 网站建设

wordpress seo插件盐城网站优化方案

本次榜单的数据主要提取的是两类AI APP,一类是AI原生APP;另一类是深度AI化的传统APP,所以大家会看到很多传统APP上榜就是这个缘由了。过去很多AI博主都鼓吹说过“AI会取代传统APP”,但现在看来,基本不可能了&#xff0…

张小明 2026/1/9 15:16:38 网站建设