如何在c中使用child进程
How to use child process in c
我在弄清楚如何使用在 fork()
中创建的活动 child 进程时遇到问题。我从另一个终端看到它们仍然处于活动状态,直到我执行退出成功。例如,如果我想说:我想使 pid 为 10243 的 child 进程此时处于活动状态,请执行此方法。我想在所有 children 初始化之后调用该方法,所以在 fork 之后。我必须输入 execvp ()
吗?
execvp (methodName (a))
?
编辑:我将尝试添加类似的代码以便更具体
所以假设我做了一个循环,我创建了 n child
switch (pid = fork()) {
case -1:
/* Handle error */
fprintf(stderr, "%s, %d: Errore (%d) nella fork\n",
__FILE__, __LINE__, errno);
exit(EXIT_FAILURE);
case 0:
//here I have saved the pid of the child process
break;
default:
/* PARENT CODE: nothing here */
wait(NULL);
exit(0);
break;
}
}```
So at that point I have created n number of child process. Now I want, for example, that the child with the pid 10342 do a method called "method1()", and the child with the pid 10343 do a method called "method2()".
How can I say that? Is that possibile? Because I need first to create all the child and then use them while the "main process" is in stand by with an infinte cycle. Like:
```int u = 0;
while(u == 0){ I will handle the end of this with a signal
}
}
exit(EXIT_SUCCESS);
来自 fork 的手册页:
The child process and the parent process run in separate memory spaces. At the time of fork() both memory spaces have the same content.
也就是说,内存中的所有函数都可以被父进程和子进程调用,但是没有办法,一个进程可以调用另一个进程内存中的函数space .
为此你需要 IPC(进程间通信)。
附录:
fork 后,您可以 运行 您喜欢的每个函数(在子进程中 - 我希望您知道那是什么意思,如果不知道,提供的 link 将帮助您).但是对于 'make' 子进程处于活动状态并且 运行 某种方法只能通过 IPC。
我在弄清楚如何使用在 fork()
中创建的活动 child 进程时遇到问题。我从另一个终端看到它们仍然处于活动状态,直到我执行退出成功。例如,如果我想说:我想使 pid 为 10243 的 child 进程此时处于活动状态,请执行此方法。我想在所有 children 初始化之后调用该方法,所以在 fork 之后。我必须输入 execvp ()
吗?
execvp (methodName (a))
?
编辑:我将尝试添加类似的代码以便更具体
所以假设我做了一个循环,我创建了 n child
switch (pid = fork()) {
case -1:
/* Handle error */
fprintf(stderr, "%s, %d: Errore (%d) nella fork\n",
__FILE__, __LINE__, errno);
exit(EXIT_FAILURE);
case 0:
//here I have saved the pid of the child process
break;
default:
/* PARENT CODE: nothing here */
wait(NULL);
exit(0);
break;
}
}```
So at that point I have created n number of child process. Now I want, for example, that the child with the pid 10342 do a method called "method1()", and the child with the pid 10343 do a method called "method2()".
How can I say that? Is that possibile? Because I need first to create all the child and then use them while the "main process" is in stand by with an infinte cycle. Like:
```int u = 0;
while(u == 0){ I will handle the end of this with a signal
}
}
exit(EXIT_SUCCESS);
来自 fork 的手册页:
The child process and the parent process run in separate memory spaces. At the time of fork() both memory spaces have the same content.
也就是说,内存中的所有函数都可以被父进程和子进程调用,但是没有办法,一个进程可以调用另一个进程内存中的函数space .
为此你需要 IPC(进程间通信)。
附录:
fork 后,您可以 运行 您喜欢的每个函数(在子进程中 - 我希望您知道那是什么意思,如果不知道,提供的 link 将帮助您).但是对于 'make' 子进程处于活动状态并且 运行 某种方法只能通过 IPC。