IPC: Connexion между Linux и Simulink

Для моего проекта я должен был написать две программы (с C), которые общаются друг с другом, используя общую память. Первая программа должна написать сообщение, а вторая программа должна прочитать его. Теперь мне нужно реализовать вторую программу в Simulink, чтобы первая программа могла теперь общаться с Simulink на этот раз. Я знаю, что мне нужно использовать S-функцию для реализации кода (для программы secend) в Simulink, но я не могу скопировать команду в месте записи. Может кто-нибудь помочь мне, пожалуйста, с этим? Вот код второй программы:

    #include <sys/ipc.h>
    #include <sys/shm.h>
    #include <sys/sem.h>
    #include <stdio.h>
    #include <stdlib.h>

    #define CLEF 666
    #define LONGUEUR_SEGMENT 512 


    int main(int argc,char *argv[])
   {
     int semaphores;
     int memoirePartagee;
     struct sembuf manipSemaphores;
     char *attacheMoi;


     if ((memoirePartagee=shmget(CLEF,LONGUEUR_SEGMENT,0600)) == -1)
     {
     puts("Unable to access the shared memory segment");
     exit(1);
      }


      if ((semaphores=semget(CLEF,2,0600)) == -1)
      {
       puts("Unable to access the semaphore");
       exit(1);
       }

       /* Operation P(1) => we ask to access the resource */

       manipSemaphores.sem_num=0;
       manipSemaphores.sem_op=-1;

       semop(semaphores,&manipSemaphores,1);

       puts("I request to enter the resource");fflush(stdout);

       attacheMoi=shmat(memoirePartagee,NULL,0);


       if ((int)(*attacheMoi)==-1)
       {
       puts("Unable to attach !");
       exit(1);
       }
       else
       {
       printf("Address of attachment : %p \n",attacheMoi);
       puts("Contents of a memory of attachment ");
       puts(attacheMoi);
       shmdt(attacheMoi);
       manipSemaphores.sem_num=0;
       manipSemaphores.sem_op=1;
       semop(semaphores,&manipSemaphores,1);
       }


       puts("Unlock the other processes");
       fflush(stdout);

       /* Unlock the waiting semaphore*/

       manipSemaphores.sem_num=1;
       manipSemaphores.sem_op=-1;
       semop(semaphores,&manipSemaphores,1);


       return 0;
       }

Другой вопрос, что такое linux commande (в консоли linux) для подключения первой программы к Simulink?

0 ответов

Другие вопросы по тегам