linux下用fork(),execve()函数创建子进程,并用子进程执行另外一个程序

如题所述

//main1.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
printf("program 1 started\n");
char *newargv[] = { "hello", "world" };
char *newenviron[] = { NULL };
int pid=fork();
if(pid < 0)
exit(EXIT_FAILURE);
if(pid == 0)
{
execve("./main2", newargv, newenviron); //打开同级目录下的main2程序
perror("execve"); /* execve() only returns on error */
exit(EXIT_FAILURE);
}

//父进程继续
sleep(5); //do something
printf("Promgram 1 finished!\n");
return 0;
}
//main2.c
#include <stdio.h>
#include <unistd.h>

int main(int argc,char *argv[])
{
printf("program 2 started\n");
int i;
for(i = 0; i<argc;i++)
printf("%s\n",argv[i]);
sleep(5); //do something
printf("Promgram 2 finished!\n");
return 0;
}

然后编译
gcc -o main1 main1.c
gcc -o main2 main2.c

运行
./main1
温馨提示:答案为网友推荐,仅供参考
相似回答