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;
}
网友评论