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?