当前位置: 首页 > wzjs >正文

php网站数据库怎样导入上海网站seo

php网站数据库怎样导入,上海网站seo,优化设计五年级下册数学答案,做医院的系统网站怎么做一、进程等待 1.1 进程等待必要性 子进程退出后,若父进程不管不顾,可能会产生 “僵尸进程”,进而造成内存泄漏。进程一旦变为僵尸状态,即使使用 kill -9 也无法将其杀死,因为无法杀死一个已死的进程。父进程需要了解…

一、进程等待

1.1 进程等待必要性

  • 子进程退出后,若父进程不管不顾,可能会产生 “僵尸进程”,进而造成内存泄漏。
  • 进程一旦变为僵尸状态,即使使用 kill -9 也无法将其杀死,因为无法杀死一个已死的进程。
  • 父进程需要了解子进程的任务完成情况,比如子进程运行结束后结果是否正确,是否正常退出。
  • 父进程通过进程等待的方式,回收子进程资源并获取其退出信息。

1.2 进程等待的方法

wait() 函数

wait() 函数用于阻塞等待子进程的结束,并回收其资源。以下是一个简单的示例代码:

#include <sys/wait.h>
#include <stdio.h>int main() {pid_t child_pid = fork();if (child_pid == 0) {// 子进程执行任务exit(42);  // 子进程退出码42} else {int status;pid_t terminated_pid = wait(&status);  // 阻塞等待if (WIFEXITED(status)) {printf("子进程 %d 退出码: %d\n", terminated_pid, WEXITSTATUS(status));}}return 0;
}
waitpid() 函数

waitpid() 函数的原型为 pid_t waitpid(pid_t pid, int *status, int options);,它可以更灵活地等待指定子进程的结束。

1.3 获取子进程 status

wait 和 waitpid 都有一个 status 参数,这是一个输出型参数,由操作系统填充。若传递 NULL,表示不关心子进程的退出状态信息;否则,操作系统会根据该参数将子进程的退出信息反馈给父进程。

status 不能简单地当作整型来看待,可将其视为位图,具体细节可参考下面的图片(只研究 status 低 16 比特位):

状态位说明
低8位(0-7)子进程退出码 (正常终止时有效)
第8位(8-15)信号编号 (被信号终止时有效)
其他标志位通过宏检测状态类型(如WIFEXITED)

1.4 阻塞和非阻塞

核心结论
  • 本质区别

    • 阻塞(Blocking):调用者线程暂停执行,直到操作完成(如数据到达、资源就绪)。

    • 非阻塞(Non-blocking):调用立即返回,无论操作是否完成,需通过轮询或事件通知获取结果。

  • 选择依据

    • 阻塞:适合简单逻辑、单任务场景,代码直观但资源利用率低。

    • 非阻塞:适合高并发、实时响应需求,需配合多路复用(如epoll)或异步通知(如回调)

深度解析
运行机制对比
特性阻塞模式非阻塞模式
线程状态挂起(Sleeping)持续运行(Running)
CPU 占用低(等待时不消耗 CPU)高(需轮询检查状态)
响应延迟操作完成后立即响应需主动检测或等待通知
代码复杂度低(线性执行)高(需处理中间状态和错误码)
典型应用场景

以下是阻塞和非阻塞模式的典型应用代码示例:

阻塞模式示例

#include <stdio.h>
#include <fcntl.h>int main() {int fd = open("file.txt", O_RDONLY);  char buf[1024];  read(fd, buf, sizeof(buf));  // 阻塞直到数据就绪  printf("Data: %s\n", buf);  return 0;
}

非阻塞模式示例

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>#define BUFFER_SIZE 1024int main() {int sockfd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);  struct sockaddr_in server_addr;memset(&server_addr, 0, sizeof(server_addr));server_addr.sin_family = AF_INET;server_addr.sin_port = htons(8080);server_addr.sin_addr.s_addr = INADDR_ANY;connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));  char data[BUFFER_SIZE] = "Hello, Server!";int len = strlen(data);while (1) {  if (send(sockfd, data, len, MSG_DONTWAIT) == -1) {  if (errno == EAGAIN) {  usleep(1000);  // 数据未就绪,短暂等待后重试  continue;  }  }  break;  }  close(sockfd);return 0;
}

二、进程程序替换

2.1 替换原理

使用 fork 创建子进程后,子进程执行的是与父进程相同的程序(但可能执行不同的代码分支)。若子进程想执行一个全新的程序,可通过进程的程序替换来实现。当进程调用一种 exec 函数时,该进程的用户空间代码和数据会完全被新程序替换,并从新程序的启动例程开始执行。调用 exec 并不会创建新进程,因此调用前后该进程的 ID 不会改变。

2.2 替换函数

函数名参数传递方式PATH 搜索环境变量典型用途
execl参数列表(可变参数)继承当前环境已知绝对路径的固定参数调用
execv参数数组(char *[]继承当前环境动态构建参数的固定路径调用
execlp参数列表继承当前环境执行 PATH 中的命令(如 Shell)
execvp参数数组继承当前环境动态执行 PATH 中的命令
execle参数列表自定义环境变量需严格控制环境的场景
execvpe参数数组自定义环境变量动态参数 + 自定义环境

2.3 函数解释

这些函数如果调⽤成功则加载新的程序从启动代码开始执⾏,不再返回。
如果调⽤出错则返回-1
所以exec函数只有出错的返回值⽽没有成功的返回值

2.4 命名理解

  • l(list):表示参数采用列表形式。
  • v(vector):参数使用数组。
  • p(path):有 p 则自动搜索环境变量 PATH
  • e(env):表示自己维护环境变量。

以下是调用示例:

#include <unistd.h>
#include <stdio.h>int main() {char *const argv[] = {"ps", "-ef", NULL};char *const envp[] = {"PATH=/bin:/usr/bin", "TERM=console", NULL};execl("/bin/ps", "ps", "-ef", NULL);// 带 p 的,可以使用环境变量 PATH,无需写全路径execlp("ps", "ps", "-ef", NULL);// 带 e 的,需要自己组装环境变量execle("ps", "ps", "-ef", NULL, envp);execv("/bin/ps", argv);// 带 p 的,可以使用环境变量 PATH,无需写全路径execvp("ps", argv);// 带 e 的,需要自己组装环境变量execve("/bin/ps", argv, envp);// 如果 exec 调用失败,会执行到这里perror("exec 调用失败");return 1;
}

http://www.dtcms.com/wzjs/317095.html

相关文章:

  • 黄冈网站建设推荐新网
  • 做兼职上哪个网站百度热搜榜排名今日
  • wordpress 织梦转换今日头条关键词排名优化
  • 包装袋设计网站推荐软文营销经典案例优秀软文
  • 网站功能模块结构图seo关键词优化的技巧和方法
  • java如何进行网站开发十大计算机培训学校
  • 网站建设营销词山东一级造价师
  • 专业的网站建设公司优化搜索曝光次数的方法
  • 北京最好的网站制作公司百度关键词热搜
  • 四川住房和城乡建设厅进不去网站知名seo公司
  • 广州建设局网站首页百度指数购买
  • 用fullpage做的网站爱站网爱情电影网
  • 广州旅游网站建设江门百度seo公司
  • 青州企业网站建设找文网客服联系方式
  • 黄页网站查询数据山东潍坊疫情最新消息
  • 做新闻网站需要注册第几类商标宁波seo关键词培训
  • 金坛区建设局网站徐州seo顾问
  • 国外好的做电视包装的网站网店推广有哪些
  • wordpress 头像本地化南宁哪里有seo推广厂家
  • 公司网站备案信息查询百度推广费2800元每年都有吗
  • 搭建一个购物网站今天新闻头条最新消息
  • 苏州市公共交易资源平台网站编辑seo
  • 一级造价工程师准考证打印时间福建企业seo推广
  • wordpress建设企业网站制作网页需要多少钱
  • 小企业网站建设一般收费东莞seoseo关键词排名优化
  • 我的文档上传到网站 做链接各网站收录
  • p2p网上贷款网站建设方案.docx西安网络推广公司大全
  • 一些大型网站的服务器需要租用多大的带宽营业推广促销方式有哪些
  • 做学校后台网站用什么浏览器举例网络营销的例子
  • 布吉网站建设哪家好seo搜索引擎优化排名哪家更专业