在主进程中创建两个子进程,子进程1进行空循环

时间:2021-08-03 23:47:33
在主进程中创建两个子进程,子进程1进行空循环,不停地输出“Hello,I am subprogram 1!”字符串,子进程2进行空循环,不停地输出“Hello,I am subprogram 2!”字符串,主进程休眠一段时间后,在主进程中结束子进程,随后主进程也退出。注意:要进行子进程的并发控制,以免两个进程的输出结果交织在一起。

6 个解决方案

#1


友情帮顶,,等待高人解答..

#2


好像不太需要做并发控制,这个是FILE的输出缓冲机制带来的一点好处。

整体上,父进程每次fork都会得到子进程的PID,过一段时间就去kill子进程,事情就完成了。

自己试着先写出第一个fork,子进程分支随便干点啥,就会打消对多进程的陌生和恐惧心理的。

#3


我们都选的第12题,做好了,借给我借鉴一番,好么

#4


#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>



void child_function_one()//子进程1的函数
{
       
while(1)
{
printf("Hello ! I am subprogram 1! \n");
sleep(2);//睡眠2秒
}
  
}
void child_function_two()//子进程2的函数
{
        
while(1)
{
printf("Hello ! I am subprogram 2! \n");
sleep(2);
}

}
int main()
{

 pid_t p1, p2;
 p1=fork();//派生子进程1
 if (p1==0)
{
 child_function_one();
}

p2=fork();//派生子进程2

 if (p2==0)
 { 
   child_function_two();
 }
 
    sleep(10);//主进程睡眠10秒
    kill(p1,SIGKILL);//结束子进程
    kill(p2,SIGKILL);
    
 }
 

#5


楼上的正解,代码都贴了,我就不说什么了

#6


可以使用OpenMP啊,多方便。。。
用linux也可以使用pthread,或者楼上的代码

#1


友情帮顶,,等待高人解答..

#2


好像不太需要做并发控制,这个是FILE的输出缓冲机制带来的一点好处。

整体上,父进程每次fork都会得到子进程的PID,过一段时间就去kill子进程,事情就完成了。

自己试着先写出第一个fork,子进程分支随便干点啥,就会打消对多进程的陌生和恐惧心理的。

#3


我们都选的第12题,做好了,借给我借鉴一番,好么

#4


#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>



void child_function_one()//子进程1的函数
{
       
while(1)
{
printf("Hello ! I am subprogram 1! \n");
sleep(2);//睡眠2秒
}
  
}
void child_function_two()//子进程2的函数
{
        
while(1)
{
printf("Hello ! I am subprogram 2! \n");
sleep(2);
}

}
int main()
{

 pid_t p1, p2;
 p1=fork();//派生子进程1
 if (p1==0)
{
 child_function_one();
}

p2=fork();//派生子进程2

 if (p2==0)
 { 
   child_function_two();
 }
 
    sleep(10);//主进程睡眠10秒
    kill(p1,SIGKILL);//结束子进程
    kill(p2,SIGKILL);
    
 }
 

#5


楼上的正解,代码都贴了,我就不说什么了

#6


可以使用OpenMP啊,多方便。。。
用linux也可以使用pthread,或者楼上的代码