Bonjour bonjour, ma question est toute simple, j'ai un gros problème sur l'utilisation de la fonction signal, j'ai lu le man mais rien à faire je ne comprend pas l'utilisation de la fonction pour définir le comportement lors de la réception d'un signal. Je vous poste un petit bout du code, sans doute saurez vous m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void    exec_or_die(int *flag, char **path, char **tab, char **env)
{
  char          *bin;
  int           j;
  int           status;
  pid_t         pid;
  static int    co = 0;
  void          (*point)(pid_t);
 
  point = &check_process;
  bin = malloc(sizeof(*bin) * (my_strlen(path[co]) + (*tab == NULL ? 0 : my_strlen(tab[0])) + 2));
  bin = my_strcat(path[co], tab[0], bin);
  if (path[co + 1] == 0)
    co = 0;
  if ((j = access(bin, F_OK)) == 0)
    if ((j = access(bin, X_OK)) == 0)
      {
        *flag = 1;
        pid = fork();
        signal(SIGINT, (*point)(pid))(0);
        if (pid > 0)
          wait(&status);
        else if (pid == 0)
          execve(bin, tab, env);
      }
  ++co;
  free(bin);
}
Et l'erreur est lors de la compilation, cela donne :

error: invalid use of void expression

A la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
signal(SIGINT, (*point)(pid))(0);
Merci d'avance à l'apprenti codeur que je suis .