W poniższym programie, jeśli odkomentuję linię , mój program zakończy się, gdy uderzę C-c
, ten sam program się nie zakończy Jeśli nie skomentuję tej linii. Ktoś wie, w jaki sposób zmiana sygnału wpływa na kodowanie _XOPEN_SOURCE
? Jestem na Linuksie z gcc (4.6.3) i glibc (2.15).XOPEN_SOURCE i obsługa sygnałów
/* #define _XOPEN_SOURCE 700 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
typedef void (*sighandler_t)(int);
void handle_signal(int signo)
{
printf("\n[MY_SHELL] ");
fflush(stdout);
}
int main()
{
int c;
signal(SIGINT, SIG_IGN);
signal(SIGINT, handle_signal);
printf("[MY_SHELL] ");
while ((c = getchar()) != EOF) {
if (c == '\n')
printf("[MY_SHELL] ");
}
printf("\n");
return 0;
}
Na marginesie: 'char c': no, no, no, no, no. 'EOF' musi być poza pasmem. Dlatego 'getchar' zwraca' int'. – Dave
@Dave Masz rację. To był faktycznie przykład znaleziony w Internecie. Nie zauważyłem tego. Napraw to teraz. – yasar