hello~ 很高兴见到大家! 这次带来的是Linux系统中关于进程控制这部分的一些知识点,如果对你有所帮助的话,可否留下你宝贵的三连呢? 个 人 主 页: 默|笙
接上次的博客->[进程等待]。
如果我们想要在一个进程里面执行另一个程序,那么就需要进行程序替换,也就是父进程创建一个子进程,然后通过程序替换的方式将想要执行的程序交给这个子进程去去执行。

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ...,char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execve(const char *path, char *const argv[], char *const envp[]);
1 #include<unistd.h>
2 #include<stdio.h>
3 #include<sys/types.h>
4 #include<wait.h>
5
6 int main()
7 {
8 pid_t id = fork();
9 if (id == 0)
10 {
11 printf("我是一个子进程,接下来我要进行程序切换了!\n");
12 execl("/usr/bin/ls", "ls", "-a", "-b", NULL);
13 }
14 printf("我是一个父进程,我回收了子进程\n");
15 pid_t sid = waitpid(id, NULL, 0);
16 return 0;
17 }

7 int main()
8 {
9 pid_t id = fork();
10 if (id == 0)
11 {
12 printf("我是一个子进程,pid:%d,我要进行程序切换了\n", getpid());
13 char* argv[] = {(char*)"ls",
14 (char*)"-a",
15 (char*)"-l",
16 NULL};
17 execv("/usr/bin/ls", argv);
18 exit(0);
19 }
W> 20 pid_t sid = waitpid(id, NULL, 0);
21 printf("我是一个父进程,我回收了子进程\n");
22 return 0;
23 }


7 int main()
8 {
9 pid_t id = fork();
10 if (id == 0)
11 {
12 printf("我是一个子进程,pid:%d,我要进行程序切换了\n", getpid());
13 char* argv[] = {(char*)"ls",
14 (char*)"-a",
15 (char*)"-l",
16 NULL};
17 execvp("ls", argv);
18 exit(0);
19 }
W> 20 pid_t sid = waitpid(id, NULL, 0);
21 printf("我是一个父进程,我回收了子进程\n");
22 return 0;
23 }



test.c
7 int main()
8 {
9 extern char** environ;
10 pid_t id = fork();
11 if (id == 0)
12 {
13 printf("我是一个子进程,pid:%d,我要进行程序切换了\n", getpid());
14 char* argv[] = {(char*)"myfile",
15 NULL};
16 putenv((char*)"haha=helloworld");
17 putenv((char*)"PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/mosheng/.local/bin:/home/mosheng/bin:/home/mosheng /my_file");
18 execvpe("myfile", argv, environ);
19 exit(0);
20 }
W> 21 pid_t sid = waitpid(id, NULL, 0);
22 printf("我是一个父进程,我回收了子进程\n");
23 return 0;
24 }myfile.c
3 int main()
4 {
5 printf("我是file文件,程序切换成功啦!\n");
6 printf("%s\n", getenv("haha"));
7 return 0;
8 }
今天的分享就到此结束啦,如果对读者朋友们有所帮助的话,可否留下宝贵的三连呢~~ 让我们共同努力, 一起走下去!