Articles of signaux de

Pourquoi une erreur de projection timer_create pour SIGEV_THREAD dans Solaris 10?

J’ai écrit un morceau en utilisant timer_create pour que le minuteur appelle un thread dans lequel je mets sigev_notify comme SIGEV_THREAD, cela me donne l’erreur EINVAL (argument invalide), mais lorsque je mets sigev_notify comme code SIGEV_SIGNAL fonctionne bien mon ce morceau de code fonctionne dans tous les systèmes d’exploitation même dans Solaris 11 mais pour […]

libsigsegv et répondant à un débordement de stack

Nous essayons de tester le code des étudiants et, dans le but d’automatiser le processus, nous souhaitons détecter si le code d’un étudiant déborde de la stack. J’ai rencontré un certain succès en utilisant la bibliothèque libsigsegv et son stackoverflow_install_handler correspondant. Cela fonctionne brillamment, jusqu’à ce que le code de l’élève explose deux fois. Par […]

Traçage dans le gestionnaire de signaux

J’essaie de suivre le code de ce billet pour que les gestionnaires de signaux impriment une trace en arrière sur des erreurs telles que les erreurs de virgule flottante et de segmentation. J’utilise des signaux de défaut seg comme sharepoint départ. Voici le code: #include //for exit() #include //signal handling #include //backtrace, backtrace_symbols and backtrace_fd […]

Programme C multithread; comment tuer les processus engendrés par les threads?

Situation: J’écris un programme en C qui maintient un certain nombre de threads. Une fois qu’un fil se termine, un nouveau est créé. Chaque threads – l’enfant exécute un processus via exec () et le parent l’attend. De plus, il existe un thread de traitement de signal qui attend les signaux. Si SIGINT est détecté, […]

boucle scanf et gestionnaire de signal

Vient d’apprendre la sigacation, a également implémenté une autre timer pour la rendre plus intéressante. #include #include #include volatile sig_atomic_t gotsignal; void handler(){ gotsignal = 1; } int main(){ struct sigaction sig; struct itimerval timer; timer.it_value.tv_sec = 5; timer.it_value.tv_usec = 0; timer.it_interval = timer.it_value; sig.sa_handler = handler; sig.sa_flags = 0; sigemptyset(&sig.sa_mask); setitimer(ITIMER_REAL, &timer, 0); sigaction(SIGALRM, […]

Comment détecter si une erreur de segment non initialisée / catch variable en C

J’ai actuellement un programme dans lequel j’ai besoin de tester si une variable passée en paramètre est non initialisée. Jusqu’ici, il semble que cela soit assez difficile à faire en C, donc mon idée suivante était d’invoquer un gestionnaire de signal pour intercepter l’erreur de segmentation. Cependant, mon code n’appelle pas le gestionnaire de signal […]

SIGCHLD a causé une erreur de segmentation, sans entrer dans le gestionnaire

J’essaie de créer un simple shell et j’ajoute des fonctionnalités pour exécuter des processus en arrière-plan avec &. Dans ma méthode principale, j’ai essentiellement: int main() { if (signal(SIGCHLD, handle) == SIG_ERR) perror(“Cannot catch SIGCHLD”); pid_t child = fork(); if (child == 0) execvp(command, arguments); else { if (background == 1) { printf(“1”); backgroundList(command, child); […]

SIGSTOP ne fonctionne pas dans le programme c

J’essaie d’écrire un programme C dans lequel le processus parent suspend le processus enfant et, après quelques secondes, continue de l’exécuter. #include #include #include #include void sigstop(); void sigcont(); void sigquit(); int main() { int pid; if ((pid = fork()) < 0) { perror("fork"); exit(1); } if (pid == 0) { /* child */ signal(SIGSTOP,sigstop); […]

Le gestionnaire de signal C est activé par tous les processus enfants

J’ai besoin d’une sorte de signal_handler qui, lorsque vous appuyez sur CTRL + C, le programme suspend toutes ses opérations et demande à l’utilisateur: «Êtes-vous sûr de vouloir terminer (Y / N)?» Si la réponse est y, le programme se termine, si c‘est n le programme continue / fonctionne avec ses fonctions, c’est ce que […]

Catching Violations Segmentation et passer à autre chose

J’écris un programme qui examine son propre espace d’adressage. Plus précisément, je me soucie de tous les blocs de données malloc-ed. S’il y avait un appel système pour en obtenir une liste, ce serait fantastique (pour mon application, je ne peux utiliser LD_PRELOAD, -wrap, ni aucune option supplémentaire en ligne de commande). S’il existe un […]