操作系统
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{ int p1, p2;
while((p1=fork())==-1);
if(p1==0)
printf("b ");
else
{ while((p2=fork())==-1);
if(p2==0)
printf("c ");
else
printf("a ");
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{ int p1, p2;
while((p1=fork())==-1);
if(p1==0)
printf("b pid=%d ppid=%d\n",getpid(),getppid());
else
{ while((p2=fork())==-1);
if(p2==0)
printf("c pid=%d ppid=%d\n",getpid(),getppid());
else
printf("a pid=%d",getpid());
}
return 0;
}
图一:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
int p1,p2,p3;
while((p1=fork())== -1);
if(p1==0)
{
while((p2=fork())== -1);
if(p2==0)
{
while((p3=fork())== -1);
if(p3==0)
printf("d,pid=%d,ppid=%d\n",getpid(),getppid());
else
printf("c,pid=%d,ppid=%d\n",getpid(),getppid());
}
else
printf("b,pid=%d,ppid=%d\n",getpid(),getppid());
}
else
printf("a,pid=%d\n",getpid());
return (0);
}
1) #include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
main()
{ int child,p;
while((child=fork())==-1);
if(child==0) //子进程下
{ printf("In child: sleep for 10 seconds and then exit. \n");
sleep(10);
exit(0);
}
else //父进程下
{ do
{ p=waitpid(child,NULL,WNOHANG);
if(p==0)
{ printf("In father: The child process has not exited.\n");
sleep(1);
}
}while(p==0);
if(p==child)
{ printf("Get child exitcode then exit!\n");}
else
{ printf("Error occured!\n");}
}
exit(0);
}
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
main()
{ int child,p;
while((child=fork())==-1);
if(child==0)
{ execl("/home/user/sy1/welcome.out","",NULL);
exit(0);
}
else
{ p=waitpid(child,NULL,0);
if(p==child)
printf("Get child exitcode then exit!\n");
else
printf("Error occured!\n");
}
exit(0);
}
子进程要加载的程序welcome.c:
#include<stdio.h>
main()
{ printf("Hello! This is the loaded program.\n");}
浙公网安备 33010602011771号