我如何创建两个子进程,每个子进程在 c 中运行不同的程序
how can i create two child processes, each runs a different program in c
我正在尝试通过 c 中的父进程创建 2 个子进程,每个子进程 运行 是一个不同的程序?
我如何更改此代码以让每个进程 运行 execution1()
和 execution2()
?
void execution1(char *argve[]);
void execution2(char *argve[]);
int main(int argc, char *argv[], char *argve[]) {
pid_t pid[2];
int i;
/* Creation du processus fils */
for(i=0; i < 2; ++i){
if((pid[i] = fork()) == -1) {
perror("Erreur lors de la creation du fils ");
exit(EXIT_FAILURE);
}
if(pid[i] == 0)
execution1(argve);
//execution2(argve); how can i let only the 2nd child run this line
}
/* Attente de la fin de l'execution du fils */
printf("Attente de la fin du fils...\n");
if(waitpid(pid, NULL, 0) == -1) {
perror("Erreur lors de l'attente de la fin du processus ");
exit(EXIT_FAILURE);
}
printf("C'est bon !\n");
return EXIT_SUCCESS;
}
您考虑过使用 i
吗?如果i
为0,则执行execution1
,如果i
为1,则执行execution2
for(i=0; i < 2; ++i)
{
if((pid[i] = fork()) == -1) {
perror("Erreur lors de la creation du fils ");
exit(EXIT_FAILURE);
}
if(pid[i] == 0)
{
if(i == 0)
execution1(argve);
else
execution2(argve);
// exiting child
exit(0);
}
}
// waiting
for(i=0; i < 2; ++i)
{
if(waitpid(pid[i], NULL, 0) == -1) {
perror("Erreur lors de l'attente de la fin du processus ");
exit(EXIT_FAILURE);
}
}
我正在尝试通过父进程在 c 中创建 2 个子进程,每个子进程运行不同的程序?
为此你需要使用fork-exec方法。
您 fork 一个子进程然后使用 exec()
启动新程序,调用 exec()
的子进程的整个内存映像将被替换为从您在 exec()
我正在尝试通过 c 中的父进程创建 2 个子进程,每个子进程 运行 是一个不同的程序?
我如何更改此代码以让每个进程 运行 execution1()
和 execution2()
?
void execution1(char *argve[]);
void execution2(char *argve[]);
int main(int argc, char *argv[], char *argve[]) {
pid_t pid[2];
int i;
/* Creation du processus fils */
for(i=0; i < 2; ++i){
if((pid[i] = fork()) == -1) {
perror("Erreur lors de la creation du fils ");
exit(EXIT_FAILURE);
}
if(pid[i] == 0)
execution1(argve);
//execution2(argve); how can i let only the 2nd child run this line
}
/* Attente de la fin de l'execution du fils */
printf("Attente de la fin du fils...\n");
if(waitpid(pid, NULL, 0) == -1) {
perror("Erreur lors de l'attente de la fin du processus ");
exit(EXIT_FAILURE);
}
printf("C'est bon !\n");
return EXIT_SUCCESS;
}
您考虑过使用 i
吗?如果i
为0,则执行execution1
,如果i
为1,则执行execution2
for(i=0; i < 2; ++i)
{
if((pid[i] = fork()) == -1) {
perror("Erreur lors de la creation du fils ");
exit(EXIT_FAILURE);
}
if(pid[i] == 0)
{
if(i == 0)
execution1(argve);
else
execution2(argve);
// exiting child
exit(0);
}
}
// waiting
for(i=0; i < 2; ++i)
{
if(waitpid(pid[i], NULL, 0) == -1) {
perror("Erreur lors de l'attente de la fin du processus ");
exit(EXIT_FAILURE);
}
}
我正在尝试通过父进程在 c 中创建 2 个子进程,每个子进程运行不同的程序?
为此你需要使用fork-exec方法。
您 fork 一个子进程然后使用 exec()
启动新程序,调用 exec()
的子进程的整个内存映像将被替换为从您在 exec()