⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parent.c

📁 一个在linux实现进程通信的例子,使用socket技术,相信对想了解进程通信的人有用用途
💻 C
字号:
#include <sys/wait.h>#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#define PARENTPORT 2234#define CHILDPORT 1234#define MAXSOCKFD 10#define NULL 0struct msg{	int processid;	char strmsg[100];};int main(void){	int ChildId=0;	int ParentId;	//char *argv={"/bin/ls",".",(char *)0};	//char *envp={"PATH=/bin",0};		struct msg parentmsg;	int sockfd;	struct sockaddr_in addr;	struct sockaddr_in remote_addr;	int addr_len=sizeof(struct sockaddr_in);	int remote_len=sizeof(struct sockaddr_in);	char buffer[256];	if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)	{		perror("socket");		exit(1);	}	//remote child	bzero(&remote_addr,sizeof(remote_addr));	remote_addr.sin_family=AF_INET;	remote_addr.sin_port=htons(CHILDPORT);	remote_addr.sin_addr.s_addr=htonl(INADDR_ANY);	//local	bzero(&addr,sizeof(addr));	addr.sin_family=AF_INET;	addr.sin_port=htons(PARENTPORT);	addr.sin_addr.s_addr=htonl(INADDR_ANY);	if(bind(sockfd,&addr,sizeof(addr))<0)	{		perror("connect");		exit(1);	}		if(fork()==0)	{		printf("child is starting...\n");		ChildId=getpid();		execve("./child",NULL,NULL);		printf("child is exiting...\n");		exit(0);		}	printf("process [%d]:parent in execution...\n",getpid());		ParentId=getpid();	while(1)	{		//send msg to child		parentmsg.processid=ParentId;		strcpy(parentmsg.strmsg,"hello child i am your parent");		memcpy(buffer,&parentmsg,sizeof(struct msg));		sendto(sockfd,buffer,256,0,&remote_addr,remote_len);		sleep(1);		//recv msg from child		recvfrom(sockfd,buffer,sizeof(buffer),0,&remote_addr,&remote_len);		memset(&parentmsg,0,sizeof(struct msg));		memcpy(&parentmsg,buffer,sizeof(struct msg));		printf("The child processid is %d,and the content is %s\n",parentmsg.processid,parentmsg.strmsg);		sleep(1);			}	sleep(2);	if(wait(NULL)>0)		printf("process [%d]:parent detects terminating child \n",getpid());	printf("process [%d]:parent terminating ... \n",getpid());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -