使用C语言编程实现:父进程创建二个子进程,三个进程各自打印出其进程 10
2个回答
展开全部
这个在Linux和在Windows下的实现方法是完全不一样的。因为两个系统创建进程的函数不同。其中Windows环境下的实现非常复杂。
给你两个例子供你参考吧。
Linux环境下的实现:
#include <stdio.h>
int main(int argc, char *argv[])
{
int pid1,pid2;
/*调用fork函数创建进程1*/
if ( ( pid1=fork() ) < 0 )
{ /*fork()返回值为负数,则创建进程失败*/
printf( "ProcessCreate Failed!");
exit(-1);
}
/**
/*fork()返回值为0,则创建子进程成功且当前进程为子进程
*/
if ( ( pid1=fork() ) == 0 )
{
printf( "b\n" ); //子进程1输出’b’;
}
/**
/*创建子进程2
***/
if ( ( pid2=fork() ) < 0 ) /*fork()返回值为负数,则创建进程失败*/
{
printf( "ProcessCreate Failed!");
exit(-1);
}
/**
/*fork()返回值为0,则创建子进程成功且当前进程为子进程
*/
if ( ( pid2=fork() ) == 0 )
{
printf( "c\n" ); //子进程2输出’c’;
}
/*fork()返回值大于0,则当前进程为父进程*/
else
{
wait(NULL);
printf( "a\n" ); //父进程输出’a’;
exit(0);
}
return 0;
}
Windows环境下的实现没有写。大概需要使用包含在windows.h中的头文件中的CreateProcess()函数实现创建进程。
给你两个例子供你参考吧。
Linux环境下的实现:
#include <stdio.h>
int main(int argc, char *argv[])
{
int pid1,pid2;
/*调用fork函数创建进程1*/
if ( ( pid1=fork() ) < 0 )
{ /*fork()返回值为负数,则创建进程失败*/
printf( "ProcessCreate Failed!");
exit(-1);
}
/**
/*fork()返回值为0,则创建子进程成功且当前进程为子进程
*/
if ( ( pid1=fork() ) == 0 )
{
printf( "b\n" ); //子进程1输出’b’;
}
/**
/*创建子进程2
***/
if ( ( pid2=fork() ) < 0 ) /*fork()返回值为负数,则创建进程失败*/
{
printf( "ProcessCreate Failed!");
exit(-1);
}
/**
/*fork()返回值为0,则创建子进程成功且当前进程为子进程
*/
if ( ( pid2=fork() ) == 0 )
{
printf( "c\n" ); //子进程2输出’c’;
}
/*fork()返回值大于0,则当前进程为父进程*/
else
{
wait(NULL);
printf( "a\n" ); //父进程输出’a’;
exit(0);
}
return 0;
}
Windows环境下的实现没有写。大概需要使用包含在windows.h中的头文件中的CreateProcess()函数实现创建进程。
展开全部
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int i=2;
int pid=0;
printf("father id=%ld\n",getpid());
while(i-->0){
pid = fork();
if(pid==0){
printf("son id=%ld\n",getpid());
return 0;
}
}
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询