void func(){ socklen_t len = sizeof(cli); int newfd = accept(fd2,(struct sockaddr*)&cli,&len); printf("to give permission press Y else N:\n"); char ch[1]; int num =read(0,ch,1); write(newfd,ch,num); if(ch[0]=='Y'){ pass_fd(newfd,fd); exit(0); } }
int main(int argc,char *argv[]){ struct sockaddr_un sa,cli; struct sockaddr_in s,c; struct msghdr msg; int i,j,ufd,sfd,fd; ufd=socket(AF_UNIX,SOCK_STREAM,0); sa.sun_family=AF_UNIX; char b[]="ff"; unlink(b); strncpy(sa.sun_path,b,sizeof(sa.sun_path)-1); bind(ufd,(struct sockaddr*)&sa,sizeof(sa)); perror("unix bind"); sfd=socket(AF_INET,SOCK_STREAM,0); s.sin_family=AF_INET; s.sin_addr.s_addr=htonl(INADDR_ANY); s.sin_port=htons(2367); bind(sfd,(struct sockaddr*)&s,sizeof(s)); perror("tcp bind"); listen(sfd,5); socklen_t t; t=sizeof(t); fd=accept(sfd,(struct sockaddr*)&c,&t); perror("accept"); printf("accepted in s1\n"); char buff[100]; i=recv(fd,buff,100,0); write(1,buff,i); printf("s2 starts\n"); t=sizeof(sa); connect(ufd,(struct sockaddr*)&sa,sizeof(sa)); perror("connect"); bzero(&msg,sizeof(msg)); printf("fd is:%d\n",fd); pass_fd(ufd,fd); close(fd); return 0; }