Du bist hier: Snippet-Verzeichnis » C/C++ (495)
Sprache:

1 vs 1 Chating Code stand for FIFO

Sprache: English
Programmiersprache: C
Veröffentlicht von: pony29a [nicht registriert]
Letzte Änderung: 15.05.2006
Aufrufe: 1290


Beschreibung

This code is one and one chating source codei use fifo however when you use this code oponent should change between parent's argv argument and child's argv argument order.

Code

1 /*File_name:chat.c 2 Copyleft Pony29A 3 Mail:coredump@lycos.co.kr 4 */ 5 6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <string.h> 10 #include <signal.h> 11 #include <unistd.h> 12 #include <fcntl.h> 13 #include <sys/types.h> 14 #include <sys/stat.h> 15 #include <sys/wait.h> 16 17 #define BUF_SIZE 80 18 #define TRUE 1 19 #define FAILED -1 20 21 22 int main(int argc,char **argv) 23 { 24 25 26 pid_t pid; 27 char message_buffer[BUF_SIZE]; 28 int read_c,write_c; 29 int temp,size; 30 int index=0; 31 32 33 if(argc!=3){ 34 fprintf(stderr,"Usage: chat [read_channel] [write_channel]\n"); 35 exit(EXIT_FAILURE);} 36 37 38 39 if((pid=fork())==FAILED){ 40 fprintf(stderr,"Error: Creat The Read Process Failed\n"); 41 close(read_c); 42 close(write_c); 43 exit(EXIT_FAILURE);} 44 45 46 if(pid==0){ 47 pid_t ppid; 48 char alram[8]=":Message"; 49 50 if((read_c=open(argv[1],O_RDONLY))==FAILED){ 51 fprintf(stderr,"Error: Cannot Open The %s Channel\n",argv[1]); 52 exit(EXIT_FAILURE);} 53 54 ppid=getppid(); 55 56 while(TRUE){ 57 memset(message_buffer,'\0',BUF_SIZE); 58 read(read_c,message_buffer,BUF_SIZE); 59 size=strlen(message_buffer); 60 if(strcmp(message_buffer,"quit")==0){ 61 write(1,"Notice:guest is gone\n",14); 62 break;} 63 64 strncat(message_buffer,alram,8); 65 size=strlen(message_buffer); 66 message_buffer[size]='\n'; 67 68 size=strlen(message_buffer); 69 write(1,message_buffer,size);} 70 71 kill(ppid,SIGKILL); 72 waitpid(ppid,NULL,0); 73 close(read_c); 74 exit(EXIT_SUCCESS);} 75 76 77 if((write_c=open(argv[2],O_WRONLY))==FAILED){ 78 fprintf(stderr,"Error: Cannot Open The %s Channel\n",argv[2]); 79 exit(EXIT_FAILURE);} 80 81 82 while(TRUE){ 83 memset(message_buffer,'\0',BUF_SIZE); 84 while((temp=getchar())!='\n'){ 85 message_buffer[index]=temp; 86 index++;} 87 size=strlen(message_buffer); 88 write(write_c,message_buffer,size); 89 if(strcmp(message_buffer,"quit")==0) 90 break; 91 index=0;} 92 93 kill(pid,SIGKILL); 94 waitpid(pid,NULL,0); 95 close(write_c); 96 exit(EXIT_SUCCESS); 97 98 99 } 100

Noch kein Kommentar vorhanden

Dieses Snippet kommentieren

Name *  

E-Mail (wird nicht angezeigt) *    

Website  

Kommentar *  

Sicherheitscode Sicherheitscode *    

RSS