elementary.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include <mpi.h>
  2. #include <stdio.h>
  3. #include <signal.h>
  4. #include <unistd.h>
  5. #include <stdlib.h>
  6. char buffer[100];
  7. int writeToFile(const char* text) {
  8. FILE *file;
  9. // Ouverture du fichier en mode écriture (efface le contenu existant)
  10. file = fopen("/tmp/output.txt", "a");
  11. // Vérifier si l'ouverture du fichier a réussi
  12. if (file == NULL) {
  13. perror("Erreur lors de l'ouverture du fichier");
  14. return 1;
  15. }
  16. // Écriture dans le fichier
  17. fprintf(file, "%s", text);
  18. // Fermeture du fichier
  19. fclose(file);
  20. printf("Données écrites dans le fichier avec succès.\n");
  21. return 0;
  22. }
  23. void handle_sigterm(int signum) {
  24. printf("Received SIGTERM (%d).\n", signum);
  25. snprintf(buffer,sizeof(buffer), "Received SIGTERM (%d).\n",signum);
  26. writeToFile(buffer);
  27. // Ajoutez ici le code de nettoyage ou de gestion du signal SIGKILL
  28. // Exemple : Fermez les fichiers, libérez la mémoire, etc.
  29. // ...
  30. // Terminez proprement le programme
  31. exit(EXIT_SUCCESS);
  32. }
  33. void handle_sigint(int signum) {
  34. printf("Received SIGINT (%d).\n", signum);
  35. exit(EXIT_SUCCESS);
  36. }
  37. int main() {
  38. // Installez le gestionnaire de signal pour SIGKILL
  39. if (signal(SIGTERM, handle_sigterm) == SIG_ERR) {
  40. perror("Erreur lors de l'installation du gestionnaire de signal");
  41. return EXIT_FAILURE;
  42. }
  43. if (signal(SIGINT, handle_sigint) == SIG_ERR) {
  44. perror("Erreur lors de l'installation du gestionnaire de signal pour SIGINT");
  45. return EXIT_FAILURE;
  46. }
  47. MPI_Init(NULL, NULL);
  48. // Get the number of processes
  49. int world_size;
  50. MPI_Comm_size(MPI_COMM_WORLD, &world_size);
  51. // Get the rank of the process
  52. int world_rank;
  53. MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
  54. // Get the name of the processor
  55. char processor_name[MPI_MAX_PROCESSOR_NAME];
  56. int name_len;
  57. MPI_Get_processor_name(processor_name, &name_len);
  58. // Print off a hello world message
  59. printf("Hello world from processor %s, rank %d out of %d processors\n",
  60. processor_name, world_rank, world_size);
  61. printf("Le programme est en cours d'exécution. PID: %d\n", getpid());
  62. // Simulation d'une tâche en cours d'exécution
  63. while (1) {
  64. // Votre code ici...
  65. // Ajoutez une pause pour éviter une utilisation intensive du processeur
  66. sleep(1);
  67. }
  68. MPI_Finalize();
  69. return EXIT_SUCCESS;
  70. }