Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <pthread.h>
  4. #include <sys/types.h>
  5. #include <sys/wait.h>
  6. #include <unistd.h>
  7. #define MAGNITUD 32
  8.  
  9. int i = 0;
  10. int n[5];
  11. int fd[2];
  12. void pthread_exit(void *retval);
  13.  
  14. void *servidor()
  15. {
  16. int seleccion;
  17. int pidel;
  18. int resultado;
  19. int pidc;
  20. resultado = read(fd[0],&pidc,MAGNITUD);
  21. printf("Reader: %d",resultado);
  22. for(i = 0; i < 5;i++){
  23. if(n[i] == 0){
  24. n[i] = resultado;
  25. break;
  26. }
  27. }
  28. printf("Menu del Servidor \n")
  29. printf("Presione 1 si quiere mostrar la lista de los procesos conectados al servidor \n");
  30. printf("Presione 2 si quiere eliminar un proceso \n");
  31. printf("Presione 3 si quiere detener el sistema completo \n");
  32. printf("Presione 4 si quiere salir \n");
  33. while(1){
  34. scanf("%d",&seleccion);
  35. if(seleccion == 1){
  36. printf("se mostrara la lista de los procesos conectados al servidor \n");
  37. for(i = 0; i < 5; i++){
  38. printf("%d ", n[i]);
  39. }
  40. printf("\n Volvio al menu, seleccione otra opcion\n");
  41. }
  42. else if(seleccion == 2){
  43. printf("inserte el pdi del cliente que quiere eliminar\n");
  44. scanf("%d ",&pidel);
  45. for(i = 0; i < 5; i++){
  46. if(n[i]== pidel){
  47. printf("se elimino \n");
  48. n[i] = 0;
  49. }
  50. }
  51. printf("Volvio al menu, seleccione otra opcion \n");
  52. }
  53. else if(seleccion == 3){
  54. printf("se detendra el sistema completo\n");
  55. for(i = 0; i < 5; i++){
  56. n[i] = 0;
  57. }
  58. pthread_exit(0);
  59. }
  60. else if(seleccion == 4){
  61. printf("salir \n");
  62. exit(0);
  63. }
  64. else{
  65. printf("no selecciono ninguna opcion disponible\n");
  66. printf("Volvio al menu, seleccione otra opcion\n");
  67. }
  68. }
  69. while (1){
  70. int resultado;
  71. int pidc;
  72. resultado = read(fd[0],&pidc,MAGNITUD);
  73. printf("Reader: %d",resultado);
  74. for(i = 0; i < 5;i++){
  75. if(n[i] == 0){
  76. n[i] = resultado;
  77. printf("i = %d n[i]0 = %d",i,n[i]);
  78. break;
  79. }
  80. }
  81. if (resultado != 1){
  82. perror("read");
  83. exit(3);
  84. }
  85.  
  86.  
  87.  
  88.  
  89.  
  90. }
  91.  
  92. return NULL;
  93. }
  94.  
  95. void *clientes()
  96. {
  97. int resultado;
  98. int pidc = getpid();
  99. while(1){
  100. resultado = write(fd[1],&pidc,MAGNITUD);
  101. printf("Writer: %d \n",pidc);
  102. if(resultado != 1){
  103. perror("write");
  104. exit(2);
  105. }
  106.  
  107. }
  108. return NULL;
  109. }
  110.  
  111. int main(int argc, char *argv[])
  112. {
  113. pthread_t pp1,pp2;
  114. int resultado;
  115. printf("Creo Thread 1 para el servidor \n");
  116. pthread_create(&pp1,NULL,servidor,NULL);
  117.  
  118. pid_t p1 = fork();
  119. pid_t p2 = fork();
  120.  
  121.  
  122. if(p1 > 0 && p2 >0){
  123. pthread_create(&pp2,NULL,clientes,NULL);
  124. printf("Creo Thread 2 para cliente y mi pid es: %d \n",getpid());
  125. pthread_join(pp2,NULL);
  126. }
  127. else if(p1 == 0 && p2 > 0){
  128. pthread_create(&pp2,NULL,clientes,NULL);
  129. printf("Creo Thread 3 para cliente y mi pid es: %d \n",getpid());
  130. pthread_join(pp2,NULL);
  131. }
  132. else if(p1>0 && p2==0){
  133. pthread_create(&pp2,NULL,clientes,NULL);
  134. printf("Creo Thread 4 para cliente y mi pid es: %d \n",getpid());
  135. pthread_join(pp2,NULL);
  136. }
  137. else {
  138. pthread_create(&pp2,NULL,clientes,NULL);
  139. printf("Creo Thread 5 para cliente y mi pid es: %d \n",getpid());
  140. pthread_join(pp2,NULL);
  141. }
  142.  
  143. return 0;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement