要求:
编程实现下面的功能:
父进程创建子进程1,子进程1创建子进程2。每个子进程都执行自己独立的程序,打印自己的pid,父进程打印两个子进程的pid;
说明:函数getpid( )功能是---获取进程的pid
#include "stdio.h"
#include "string.h"
#include "sys/ipc.h"
struct msgform{
long mtype;
char mtext[];
}msg;
int main(){
int cp1,cp2;
int msgid;
msgid=msgget(75,0777|IPC_CREAT);
if(msgid==-1){
printf("Create message queue ERROR!\n");
}
while((cp1=fork())==-1){}
if(cp1==0){
while((cp2=fork())==-1){}
if(cp2==0){
sprintf(msg.mtext,"%d",getpid());
msg.mtype=1;
msgsnd(msgid,&msg,100,IPC_NOWAIT);
printf("This is child process2.PID:%d.\n",getpid());}
else{
wait();
printf("This is child process1.PID:%d.\n",getpid());
}
}
else{
wait();
msgrcv(msgid,&msg,100,1,IPC_NOWAIT);
printf("This is parent process.PID:%d.Child Process1 PID:%d, Child Process2 PID:%s\n",getpid(),cp1,msg.mtext);
}
}