我必须在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 个分叉,并且在每个分叉中我都做
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。当我启动第二个程序时,“分段错误”错误出现在我的终端中。但是与队列的连接似乎运行得很好
我希望这个问题比上一个更具体
(对不起我的英语,这不是我的母语)