【发布时间】:2013-11-18 14:41:23
【问题描述】:
我遇到的大多数示例都展示了如何分叉,比如这个:
main()
{
int pid;
pid = fork();
// child
if (pid == 0)
{
...
}
// Parent
else if (pID > 0)
{
...
}
}
有些展示了如何分叉 2 个孩子,就像这样
pid = fork();
// Child
if ( pid==0 )
{
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Second child
if ( pid==0 ){
...
}
}
这是我分叉 5 个孩子的尝试......
pid = fork();
// Child
if ( pid==0 )
{
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Second child
if ( pid==0 ){
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Third child
if ( pid==0 ){
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Fourth child
if ( pid==0 ){
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Fifth child
if ( pid==0 ){
...
}
}
}
}
}
问题:
我的意思是,这太疯狂了。是否有更简洁的方法来循环并创建不同数量的子项(即通过命令行参数指定)?
注意: 让孩子们区分开来(即写“嗨,我是 6 号孩子”......)至关重要,因为我的工作涉及每个进程向不同的计算机发出信号。目前,我正在使用信号量和一组目标计算机这样做。我宁愿为进程增加 1..N 的指数。
【问题讨论】:
标签: c multiprocessing fork