我必须在unix中创建一个C程序。我必须模拟汽车比赛的结果表,我已经制作了一些代码来创建一些汽车(带叉子),现在我正在尝试将结果发送到另一个程序。其他程序将能够对收到的数据进行排序。我想使用消息队列或共享内存(我不知道哪种方法在这种情况下是最好的)但我没有很多经验是编程所以我真的不知道该怎么做。
这里有人可以帮助我吗?
提前谢谢!
编辑:
所以我尝试实现了一个消息队列但是我有一个分段错误。我不知道它来自哪里= /
我在每个程序中都有2个结构:
T_Voiture:
typedef struct T_voiture
{
int num;
int stand; //nombre d'arrêts au stand
bool out;
int tours; //nombre de tours
//temps en millisecondes
int meilleurTemps;
//meilleurs temps de chaque secteur
int s1;
int s2;
int s3;
//temps derniers secteurs
int secteur1;
int secteur2;
int secteur3;
float vitesse;
double tempsCourse; //temps passé en course, que l'on incrémente à chaque secteur
}T_voiture;
和my_msgbug:
struct my_msgbuf {
long mtype;
T_voiture mvoiture;
};
在我的发件人程序(Voiture1.c)中,我做了24个fork,并在每个fork中执行
struct my_msgbuf buf;
T_voiture v;
v=initialiserVoiture(v,ii);
lancerQualifs(v, longueur, TEMPS_Q1);
msgsnd(msqid, &buf, sizeof(struct my_msgbuf) - sizeof(long), 0);
在我的接收程序(Gestionnaire.c)中,我做了:
for(;;) { /* Spock never quits! */
if (msgrcv(msqid, &buf, sizeof(buf.mvoiture), 0, 0) == -1) {
perror("msgrcv");
exit(1);
}
printf("Voiture : \"%s\"\n", buf.mvoiture.meilleurTemps);
}
首先我开始使用Voiture 1.c然后是Gestionnaire.c。当我启动第二个程序时,我的终端中出现“分段故障”错误。但是与队列的连接似乎运行良好
我希望这个问题比最后一个更具体
(抱歉我的英文,这不是我的母语)
答案 0 :(得分:0)
我会说消息队列更容易,共享内存可以移动数据,但是你仍然需要提供一种在数据可用时通知其他进程的方法。