J'essaie d'appeler des fonctions qui ajoutent des caractères à la mémoire tampon, puis les supprime après. mais je n'arrive toujours pas à appeler la fonction correctement. Je travaille sur Linux.processus de tampon partagé
ERROR: q_add makes an integer without a cast.
Cela fait partie du code:
do {
printf("Enter shared buffer operation ");
printf("i(init)/a(add)/r(remove)/t(items)/d(delete)");
scanf("%c%c", &op, &discard);
int a=1;
char n;
switch (op)
{
case 'i':
printf("Enter nnumber a leter here!");
scanf("%c" &n)
q_add(a, &n);
break;
case 'a':
q_delete();
break;
case 'r':
q_remove(a, &n);
break;
//------------------------------------------------------------------
La définition de q_add()
dans le fichier approprié est:
void q_add(int n, char *x)
{
shbuf->count += n;
while (n-- > 0)
{
shbuf->buf[shbuf->inspos++] = *x++;
if (shbuf->inspos == QSIZ)
shbuf->inspos = 0;
}
}
Et cette fonction ne fonctionne pas vraiment; si je décommenter la sortie, je reçois une erreur:
void q_delete()
{
if (-1 == shmctl(shmid, IPC_RMID, 0))
{
perror("Can't remove shared mem");
//exit(1);
}
}
J'ai essayé ceci, et il a retourné une erreur de segmentation, après l'exécution et la saisie de la valeur –
Vous ne définissez jamais un à quoi que ce soit valide. C'est probablement pourquoi c'est un segfaulting. – JeremyP
En regardant votre code, utilisez 'q_add (1, &n);' parce que vous avez seulement un char – JeremyP