linux下用fork(),execve()函数创建子进程,并用子进程执行另外一个程序
答案:1 悬赏:40 手机版
解决时间 2021-11-11 22:07
- 提问者网友:蓝琪梦莎
- 2021-11-11 14:47
linux下用fork(),execve()函数创建子进程,并用子进程执行另外一个程序
最佳答案
- 五星知识达人网友:掌灯师
- 2021-11-11 16:08
//main1.c
#include
#include
#include
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");
exit(EXIT_FAILURE);
}
//父进程继续
sleep(5); //do something
printf("Promgram 1 finished!\n");
return 0;
}
//main2.c
#include
#include
int main(int argc,char *argv[])
{
printf("program 2 started\n");
int i;
for(i = 0; 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
#include
#include
#include
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");
exit(EXIT_FAILURE);
}
//父进程继续
sleep(5); //do something
printf("Promgram 1 finished!\n");
return 0;
}
//main2.c
#include
#include
int main(int argc,char *argv[])
{
printf("program 2 started\n");
int i;
for(i = 0; 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯