Advertisement
Guest User

Untitled

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