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

易语言网站怎么做网站地址栏图标怎么做

易语言网站怎么做,网站地址栏图标怎么做,网站安装php,免费开放代理execve() 是 Linux/UNIX 中的 exec 函数家族中的一个,它允许进程执行一个新的程序。具体地,execve() 替换当前进程的映像为新的程序映像。 函数原型如下: int execve(const char *pathname, char *const argv[], char *const envp[]);pathn…

execve() 是 Linux/UNIX 中的 exec 函数家族中的一个,它允许进程执行一个新的程序。具体地,execve() 替换当前进程的映像为新的程序映像。

函数原型如下:

int execve(const char *pathname, char *const argv[], char *const envp[]);
  • pathname: 要执行的程序的路径。
  • argv: 是一个字符串数组,表示要传递给新程序的参数列表。通常第一个参数 (argv[0]) 是程序的名称。这个列表必须以 NULL 指针结束。
  • envp: 是一个环境变量的字符串数组,代表新程序的环境。也必须以 NULL 指针结束。

如果 execve() 成功,它不会返回,因为调用进程的代码和数据已被新程序替换。如果出现错误,它会返回 -1 并设置适当的 errno

示例

在这个示例中,我们将尝试执行 /bin/ls 命令,列出当前目录的内容,并传递两个参数给它:-l(表示长格式)和 -a(表示列出所有文件,包括隐藏文件)。

#include <stdio.h>
#include <unistd.h>int main() {char *pathname = "/bin/ls";  // 要执行的程序的路径char *argv[] = { "ls", "-l", "-a", NULL };  // 参数列表char *envp[] = { "PATH=/bin:/usr/bin", "TERM=xterm", NULL };  // 环境变量,只是为了示例printf("Executing ls...\n");if (execve(pathname, argv, envp) == -1) {perror("execve failed");return 1;}// 如果 execve() 成功,以下代码将不会执行printf("This won't be printed if execve is successful\n");return 0;
}

在此示例中,如果 execve() 调用成功,ls 命令将会执行,并且“This won't be printed if execve is successful”这行代码将不会执行,因为原始程序的映像已被 ls 命令替换。如果 execve() 失败,它会返回 -1,然后将会打印一个错误消息,并显示“This won't be printed if execve is successful”。

majn@tiger:~/C_Project/process_project$ ./execve_demo 
total 152
drwxrwxr-x 3 majn majn  4096 Sep 17 16:34 .
drwxrwxr-x 5 majn majn  4096 Sep 17 10:21 ..
drwxrwxr-x 2 majn majn  4096 Sep 17 15:03 .vscode
-rwxrwxr-x 1 majn majn 16088 Sep 17 16:34 atexit_demo
-rw-rw-r-- 1 majn majn   345 Sep 17 16:34 atexit_demo.c
-rwxrwxr-x 1 majn majn 16112 Sep 17 16:06 errno_demo
-rw-rw-r-- 1 majn majn   284 Sep 17 16:07 errno_demo.c
-rwxrwxr-x 1 majn majn 16056 Sep 17 10:56 exec_demo
-rw-rw-r-- 1 majn majn   160 Sep 17 10:56 exec_demo.c
-rwxrwxr-x 1 majn majn 16144 Sep 17 11:14 execve_demo
-rw-rw-r-- 1 majn majn   410 Sep 17 11:14 execve_demo.c
-rwxrwxr-x 1 majn majn 16096 Sep 17 10:25 fork_demo
-rw-rw-r-- 1 majn majn   343 Sep 17 10:25 fork_demo.c
-rwxrwxr-x 1 majn majn 16272 Sep 17 15:22 status_demo
-rw-rw-r-- 1 majn majn   837 Sep 17 15:22 status_demo.c
-rwxrwxr-x 1 majn majn 16312 Sep 17 15:11 waitpid_demo
-rw-rw-r-- 1 majn majn   840 Sep 17 15:11 waitpid_demo.c

char *envp[] = { “PATH=/bin:/usr/bin”, “TERM=xterm”, NULL }; 这是一个环境变量的数组,用于传递给被 execve() 执行的程序。当一个程序运行时,它接收到了一个环境变量的集合,这些变量可以被用来影响程序的行为或配置。

在给出的数组中:

  • "PATH=/bin:/usr/bin": PATH 是一个环境变量,用于指示 shell 和其他程序在哪里查找可执行文件。值 /bin:/usr/bin 是一个冒号分隔的目录列表,当用户或程序尝试运行一个命令但没有指定其完整路径时,系统会在这些目录中查找该命令。

  • "TERM=xterm": TERM 是一个环境变量,用于指示当前终端的类型。这对于那些需要知道如何与终端互动的程序(例如文本编辑器或分页器)是有用的。在这种情况下,它被设置为 xterm,这是一个常见的终端类型。

  • NULL: 这是数组的结束标志,它告诉 execve() 在哪里停止读取环境变量。

需要注意的是,当你在日常使用 shell 时,许多环境变量(如 PATH, HOME, LANG 等)已经被设置并传递给你运行的每个程序。但在 execve() 中,你必须明确地提供你想要传递给新程序的环境变量列表,否则它不会继承任何环境变量。

http://www.yayakq.cn/news/720891/

相关文章:

  • 在平台企业网站推广怎么做没有公网ip做网站
  • 东莞网站建设 信科网络网站的建设与开发
  • 自媒体123网站网站系统制作教程视频教程
  • 3.建设营销型网站流程上海网站建设费用多少钱
  • 购物网站开发需求分析设计网站页面要注意什么
  • 织梦商城网站源码wordpress 导入网站
  • 手机移动端网站是什么网页实训报告总结1000字
  • 长沙企业网站建设哪家好有什么设计logo网站
  • 个人网站如何建设凡科做 淘宝客网站
  • 网站品牌推广策略网站及app开发招聘
  • 代点任意广告链接网站本地建站工具
  • wordpress网站防采集开发软件的成本预算
  • 南京企业自助建站试用网站开发
  • iis .net 网站架设企业名称核准查询系统
  • 女人网上量体做衣网站广告公司名称
  • 做传销网站违法做照片书网站好
  • 建设银行官方网站手机版下载安装wordpress 开发实例
  • 北京网站改版报价如何被百度收录
  • 怎么做网站模块海口网站排名
  • 漳州微信网站开发系统开发技术
  • 建立网站看病的经济问题北京网站建设明细
  • 网站内容更新用什么龙岗区网站建设哪个公司好
  • 点击一个网站跳转到图片怎么做的手机网站整站下载
  • 漳州建设项目公告网站商标注册证号查询官网
  • 网站建设合优做校园二手交易网站的目的
  • 建设银行账户网站查询密码百度分享wordpress
  • 电子商务网站建设与管理 总结下载网站模板
  • 淘宝客优惠券网站建设教程视频自己做网站背景图片
  • 制作网站哪里做程序员用的编程软件
  • 北京做养生SPA的网站建设wordpress自定义函数