Forum Programmation.c fonction getpgid

Posté par  .
Étiquettes : aucune
0
23
août
2006
salut à tous,

j'essai d'utiliser la fonction getpgid, mais mon compilateur (gcc biensur) m'envoie bouler... j'inclue pourtant bien le fichier unistd.h. Si quelqu'un à une idée, ca me ferait bien plaisir ... :)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <ctype.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>

void SysStopCSDMN(long pid)
{
long gpid ;
gpid = getpgid(pid);
killpg(gpid, SIGTERM);
}

In function SysStopCSDMN:implicit declaration of function getpgid
  • # grep -R getpgid /usr/include

    Posté par  . Évalué à 1.

    Quelle bibliothèque fournit getpid ?

    Ajoute le bon include !
    • [^] # Re: grep -R getpgid /usr/include

      Posté par  . Évalué à 1.

      man getpid :

      NAME
      setpgid, getpgid, setpgrp, getpgrp - set/get process group

      SYNOPSIS
      #include <unistd.h>

      int setpgid(pid_t pid, pid_t pgid);
      pid_t getpgid(pid_t pid);
      int setpgrp(void);
      pid_t getpgrp(void);

      ...

      :/
      • [^] # et la fin du man...

        Posté par  . Évalué à 2.


        To get the prototypes under glibc, define both _XOPEN_SOURCE and
        _XOPEN_SOURCE_EXTENDED, or use "#define _XOPEN_SOURCE n" for some inte-
        ger n larger than or equal to 500.


        donc, mets ces #define avant tes #include. (la lecture de /usr/include/unistd.h montre que cette fonction n'est déclarée que quand ce #define est actif).
        • [^] # Re: et la fin du man...

          Posté par  . Évalué à 1.

          héhé, faut lire le man jusqu'au bout ... ;)

          en tout cas ca rend le truc pas tres beau parceque sous sun ou freebsd y'a pas besoin de ca ... et ca pourri la portabilité. :/
          • [^] # Re: et la fin du man...

            Posté par  (site web personnel) . Évalué à 2.

            C'est à mettre dans le Makefile (CFLAGS += -D_XOPEN_SOURCE=500), pas dans le code.

            pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # _GNU_SOURCE

    Posté par  . Évalué à 1.

    Bonsoir,

    Pour un bien, je crois qu'il faille déclarer #define _GNU_SOURCE avant l'include #include <unistd.h> pour que getpgid() soit pris en compte.
    • [^] # Re: _GNU_SOURCE

      Posté par  . Évalué à 1.

      Comme le précise la fin du man :

      To get the prototypes under glibc, define both _XOPEN_SOURCE and _XOPEN_SOURCE_EXTENDED, or use "#define _XOPEN_SOURCE n" for some integer n larger than or equal to 500.

      Il ne s'agit donc plus de _GNU_SOURCE mais de _XOPEN_SOURCE. Bref, l'évolution de unistd.h n'a pas été faite en pensant aux vieux codes sources et à la portabilité ... C'est vraiment dommage :/

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.