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

网站开发环境与工具论坛排名

网站开发环境与工具,论坛排名,使用dw做门户网站,网站锚点怎么用excel是进程替换函数,在进行excel后它继承了原进程的一些资源,又丢弃了原进程的一些资源。 新进程与原始进程的相同点: 进程 ID 在进程替换后保持不变。原进程中打开的文件描述符在新进程中默认保持打开状态,这意味着新进程可以…

excel是进程替换函数,在进行excel后它继承了原进程的一些资源,又丢弃了原进程的一些资源。

新进程与原始进程的相同点:

  • 进程 ID 在进程替换后保持不变。
  • 原进程中打开的文件描述符在新进程中默认保持打开状态,这意味着新进程可以继续使用原进程打开的文件、管道、套接字等资源。
  • 进程所属的进程组和会话在 execl 后不会改变。
  • 原进程设置的信号掩码会被新进程继承。信号掩码定义了哪些信号当前被阻塞而不会被进程立即处理。例如,如果原进程阻塞了 SIGINT 信号,调用 execl 后新进程同样会阻塞 SIGINT 信号,直到新进程显式地修改信号掩码。

新进程与原始进程的不同点:

  • execl 用新程序的代码段、数据段、堆栈段完全替换原进程相应的部分。原进程的代码不再执行,新进程从新程序的入口点开始执行。
  • 虽然信号掩码被继承,但原进程设置的信号处理函数在新进程中不再有效。
  • 如果在调用 execl 时没有显式设置环境变量(execle 和 execve 函数可设置),新进程会继承原进程的环境变量。然而,如果原进程在 execl 之前修改了环境变量,这些修改对新进程的影响取决于新程序对环境变量的依赖和使用方式。而且,如果使用 execle 或 execve 并设置了自定义的环境变量,那么新进程将使用这些特定的环境变量,与原进程的环境变量不同。(这一点在后续代码中实操)。如果大家不是很了解环境变量,可以看这篇文章:通俗易懂linux环境变量-CSDN博客

int execl(const char *path, const char *arg, ...)

  • 功能execl 函数用于执行一个指定路径的可执行文件,并传递可变参数列表给该可执行文件的 main 函数。
  • 参数
    • path:指定要执行的可执行文件的完整路径。例如,/bin/ls 表示要执行系统中的 ls 命令程序。
    • arg:可变参数列表,以 NULL 结尾,注意这里最后一个参数必须是NULL。这些参数会被传递给新程序的 main 函数。第一个参数通常是可执行文件的名称。

        示例代码如下,输出的话,大家自行测试即可:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main() {pid_t pid = fork();if (pid == -1) {perror("fork");return 1;} else if (pid == 0) {// 子进程if (execl("/bin/ls", "ls", "-l", "/tmp", NULL) == -1) {perror("execl");exit(1);}} else {// 父进程wait(NULL);printf("Parent process continues...\n");}return 0;
}

int execlp(const char *file, const char *arg, ...)

  • 功能:与 execl 类似,但 execlp 会在环境变量 PATH 中搜索要执行的可执行文件,而不是需要完整路径。
  • 参数
    • file:要执行的可执行文件的名称,系统会在 PATH 变量指定的目录中查找该文件。
    • arg:可变参数列表,同样以 NULL 结尾,传递给新程序的 main 函数。

        示例代码如下,输出的话,大家自行测试即可:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main() {pid_t pid = fork();if (pid == -1) {perror("fork");return 1;} else if (pid == 0) {// 子进程if (execlp("ls", "ls", "-l", "/tmp", NULL) == -1) {perror("execlp");exit(1);}} else {// 父进程wait(NULL);printf("Parent process continues...\n");}return 0;
}

int execle(const char *path, const char *arg, ..., char *const envp[])

  • 功能execle 函数用于执行指定路径的可执行文件,同时可以为新程序设置自定义的环境变量。
  • 参数
    • path:可执行文件的完整路径。
    • arg:可变参数列表,传递给新程序的 main 函数,以 NULL 结尾。
    • envp:一个以 NULL 结尾的字符串数组,该数组必须以NULL结尾,用于设置新程序的环境变量。每个字符串的格式为 "变量名=值"

        示例代码如下,输出的话,大家自行测试即可:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main() {pid_t pid = fork();if (pid == -1) {perror("fork");return 1;} else if (pid == 0) {// 子进程char *envp[] = {"LD_LIBRARY_PATH=/my/lib/path", NULL};if (execle("/my/program", "program", NULL, envp) == -1) {perror("execle");exit(1);}} else {// 父进程wait(NULL);printf("Parent process continues...\n");}return 0;
}

        还记得前面所讲的吗:“如果使用 execle 或 execve 并设置了自定义的环境变量,那么新进程将使用这些特定的环境变量,与原进程的环境变量不同”。上述代码想必已经给大家做了解释。

int execv(const char *path, char *const argv[])

  • 功能execv 函数执行指定路径的可执行文件,并通过一个字符串数组传递参数给新程序的 main 函数。
  • 参数
    • path:可执行文件的完整路径。
    • argv:一个以 NULL 结尾的字符串数组,包含传递给新程序 main 函数的参数。

        示例代码如下,输出的话,大家自行测试即可:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main() {pid_t pid = fork();if (pid == -1) {perror("fork");return 1;} else if (pid == 0) {// 子进程char *argv[] = {"ls", "-l", "/tmp", NULL};if (execv("/bin/ls", argv) == -1) {perror("execv");exit(1);}} else {// 父进程wait(NULL);printf("Parent process continues...\n");}return 0;
}

int execvp(const char *file, char *const argv[])

  • 功能:与 execv 类似,但 execvp 会在环境变量 PATH 中搜索要执行的可执行文件。
  • 参数
    • file:要执行的可执行文件的名称。
    • argv:以 NULL 结尾的字符串数组,传递给新程序的 main 函数。

        示例代码如下,输出的话,大家自行测试即可:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main() {pid_t pid = fork();if (pid == -1) {perror("fork");return 1;} else if (pid == 0) {// 子进程char *argv[] = {"ls", "-l", "/tmp", NULL};if (execvp("ls", argv) == -1) {perror("execvp");exit(1);}} else {// 父进程wait(NULL);printf("Parent process continues...\n");}return 0;
}

int execve(const char *path, char *const argv[], char *const envp[])

  • 功能execve 是 exec 系列函数的基础,其他函数本质上是对它的封装。它执行指定路径的可执行文件,同时可以设置自定义的环境变量,并通过字符串数组传递参数。
  • 参数
    • path:可执行文件的完整路径。
    • argv:以 NULL 结尾的字符串数组,传递给新程序的 main 函数。
    • envp:以 NULL 结尾的字符串数组,用于设置新程序的环境变量。

        示例代码如下,输出的话,大家自行测试即可:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main() {pid_t pid = fork();if (pid == -1) {perror("fork");return 1;} else if (pid == 0) {// 子进程char *argv[] = {"ls", "-l", "/tmp", NULL};char *envp[] = {"LD_LIBRARY_PATH=/my/lib/path", NULL};if (execve("/bin/ls", argv, envp) == -1) {perror("execve");exit(1);}} else {// 父进程wait(NULL);printf("Parent process continues...\n");}return 0;
}

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

相关文章:

  • 做黄色网站会受到什么惩罚一个品牌的策划方案
  • 家居东莞网站建设seo网络优化教程
  • 一般网站建设步骤宁波百度关键词推广
  • 免费网站建设软件大全七台河网站seo
  • 自己电脑做网站好吗企业网站注册
  • 五大门户网站株洲seo优化
  • 肃宁县做网站优化营商环境条例全文
  • 网站网络设计是怎么做的怎么制作一个网站5个网页
  • 上海城乡建设学校网站进入百度知道首页
  • 网站建设分金手指排名二六重庆seo报价
  • 专业做蛋糕的网站app推广团队
  • 福州光电网站建设百度关键词分析
  • 网站的制作方案优化网站关键词排名软件
  • 安徽建设信息网站南京 seo 价格
  • 深圳网站开发服务站长工具爱站网
  • 中山网站建设文化咨询排名优化怎么做
  • 东昌府网站建设公司百度推广开户多少钱
  • 私人兼职做网站开发推广关键词排名方法
  • 深圳网站设计兴田德润官方网站周口seo推广
  • 网站开发php技术淘宝seo搜索优化工具
  • 做豆制品的网站长尾词seo排名优化
  • 大网站建设大连百度网站排名优化
  • 签约做网站模板班级优化大师app下载
  • 网站怎样多语言好用的种子搜索引擎
  • 网站开发滚动字幕上下小红书seo排名优化
  • 长春做网站哪个公司好企业建站用什么好
  • 图片网站模板精准营销系统
  • 网站制作方案的重要性网络营销产品策略的内容
  • wordpress 默认robots.txtaso优化方案
  • 燕郊疫情最新消息谷歌seo工具