12.进程的映像更新

1.读取系统的环境变量

#include<stdio.h>
#include<unistd.h>
extern char **environ; //变量的声明,只是作用域的扩充

int main(void){
    int i;
    for(i = 0; environ[i] != NULL; i++)
        printf("%s\n", environ[i]);
}
#include<stdio.h>
#include<unistd.h>
//extern char **environ; //变量的声明,只是作用域的扩充

int main(int argc, char *argv[], char *exevp[]){
    int i;
    for(i = 0; exevp[1] != NULL; i++)
        printf("%s\n", exevp[i]);
    return 0;
}

调用exec*执行映像的更新

#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<stdlib.h>


int main(void){
    char *ps_argv[] = {"ps", "-o", "pid,ppid,pgrp,comm", NULL};
    pid_t pid = fork();
    if(pid == -1) return -1;
    if(pid == 0){
        printf("child process... %d\n", getpid());
        //更新进程的映像
        //execl("/bin/ps", "ps", "-o", "pid, ppid, pgrp, comm", NULL);
        execvp("ps", ps_argv);
        //只有当exec函数家族的函数执行失败,才执行以下代码
        perror("execlp");
        exit(0);
    }
    else {
        wait(NULL);
    }
    return 0;
}
#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<stdlib.h>
extern char **environ;

int main(void){
    char *ps_envp[] = {"name=eclipse", "location=shanghai", NULL};
    pid_t pid = fork();
    if(pid == -1) return -1;
    if(pid == 0){
        printf("child process... %d\n", getpid());
        //更新进程的映像
        //execl("/bin/ps", "ps", "-o", "pid, ppid, pgrp, comm", NULL);
        execle("./execl", execl, NULL, ps_envp);
        //只有当exec函数家族的函数执行失败,才执行以下代码
        perror("execlp");
        exit(0);
    }
    else {
        wait(NULL);
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,944评论 0 5
  • 第二部分 自动内存管理机制 第二章 java内存异常与内存溢出异常 运行数据区域 程序计数器:当前线程所执行的字节...
    小明oh阅读 4,905评论 0 2
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,097评论 0 3
  • 连载八一 貌似打仗的周末 昨天是礼拜五。周末的时候心情总是会好一些。从周一到周四基本上都处于战备状态,每天神经绷得...
    周琦橞阅读 786评论 0 0
  • 我悟不到三重门,只好用二重了。这个社会好象越来越压抑了。 曾有一位老师问小学生:“雪融化后是什么?”一个小男孩抢先...
    西堂沉梦阅读 3,258评论 0 1