elementary.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include <mpi.h>
  2. #include <stdio.h>
  3. #include <signal.h>
  4. #include <unistd.h>
  5. #include <stdlib.h>
  6. void handle_sigterm(int signum) {
  7. printf("Received SIGTERM (%d).\n", signum);
  8. // Ajoutez ici le code de nettoyage ou de gestion du signal SIGKILL
  9. // Exemple : Fermez les fichiers, libérez la mémoire, etc.
  10. // ...
  11. // Terminez proprement le programme
  12. exit(EXIT_SUCCESS);
  13. }
  14. void handle_sigint(int signum) {
  15. printf("Received SIGINT (%d).\n", signum);
  16. exit(EXIT_SUCCESS);
  17. }
  18. int main() {
  19. // Installez le gestionnaire de signal pour SIGKILL
  20. if (signal(SIGTERM, handle_sigterm) == SIG_ERR) {
  21. perror("Erreur lors de l'installation du gestionnaire de signal");
  22. return EXIT_FAILURE;
  23. }
  24. if (signal(SIGINT, handle_sigint) == SIG_ERR) {
  25. perror("Erreur lors de l'installation du gestionnaire de signal pour SIGINT");
  26. return EXIT_FAILURE;
  27. }
  28. MPI_Init(NULL, NULL);
  29. // Get the number of processes
  30. int world_size;
  31. MPI_Comm_size(MPI_COMM_WORLD, &world_size);
  32. // Get the rank of the process
  33. int world_rank;
  34. MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
  35. // Get the name of the processor
  36. char processor_name[MPI_MAX_PROCESSOR_NAME];
  37. int name_len;
  38. MPI_Get_processor_name(processor_name, &name_len);
  39. // Print off a hello world message
  40. printf("Hello world from processor %s, rank %d out of %d processors\n",
  41. processor_name, world_rank, world_size);
  42. printf("Le programme est en cours d'exécution. PID: %d\n", getpid());
  43. // Simulation d'une tâche en cours d'exécution
  44. while (1) {
  45. // Votre code ici...
  46. // Ajoutez une pause pour éviter une utilisation intensive du processeur
  47. sleep(1);
  48. }
  49. MPI_Finalize();
  50. return EXIT_SUCCESS;
  51. }