Unix Systemcalls

Pagina: 1
Acties:

  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
Ik ben bezig met het schrijven van een nieuwe shell
(schoolopdracht)

Nu werkt alles, behalve dat het programma moet afsluiten als hij het signaal ctrl-d ontvangt

ik weet niet precies hoe je dat moet opvangen
het is met signal (SIGINT,catchint); wel gelukt om bijvoorbeeld ctrl-c op te vangen

maar ik weet niet precies hoe je dat met ctrl-d gaat doen

wie kan me helpen

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

kijk eens bij sigaction, misschien dat je daar wat aan hebt?
overbodig:
man sigaction

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
Weet je precies welk signal ctrl-d afgeeft

SIGINT = signaal 2
SIGTERM = signaal 15
(dacht ik)

Verwijderd

Op vrijdag 22 februari 2002 16:45 schreef dominion99 het volgende:
Weet je precies welk signal ctrl-d afgeeft
SIGQUIT = signaal 3

  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
Nee dat is klopt niet

ik heb ff snel een progje gemaakt om te testen
code:
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
29
30
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>

int main()
{
      void catchint();
      int i;

      signal (SIGQUIT,catchint);

      for (i = 1; i<99; i++)
      {
            printf ("Sleep call #%d\n", i);
            sleep(1);
      }

      puts("Exit");
      exit(0);
}

void catchint(int signo)
{
  printf("\nCATCHINT:signo=%d\n", signo);
  puts("CATCHINT: returning\n");
}

als ik op Ctrl-D druk gebeurt er niks

als ik Ctrl-\ druk krijg ik de volgende melding

programma output
code:
1
2
3
4
5
6
7
8
9
10
11
12
Sleep call #1
Sleep call #2
Sleep call #3
Sleep call #4
Sleep call #5

CATCHINT:signo=3
CATCHINT: returning

Sleep call #6
Sleep call #7
Sleep call #8

dus dan is ctrl-d toch iets anders

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

control-D doet leuke dingen met EOF
hoe je dat opzoekt weet ik niet precies :)

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

CTRL-D is idd een EOF
probeer dit maar eens:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

main()
{
  int c;

  c = getchar();
  while ( c != EOF )
    {
       putchar(c);
       c = getchar();
    }
}
Pagina: 1