Articles of linux

Pourquoi WIFSIGNALED (status) ne parvient-il pas à détecter les signaux lors du traçage d’un processus avec ptrace?

J’utilise ptrace pour suivre un processus enfant. Cela fonctionne parfaitement bien lorsque le processus enfant se termine normalement. Mais s’il se termine anormalement, le programme entre dans une boucle infinie malgré l’utilisation de la macro WIFSIGNALED (& status). Voici un exemple de processus enfant: try.c int main() { int a=5/0; } Et voici le programme […]

Comment obtenir la taille de Windows sous Linux

toutes les personnes. Je suis encore nouveau en programmation. J’ai vraiment besoin d’aide pour résoudre les problèmes auxquels je suis confronté. Donc, la situation est la suivante: j’essaie d’afficher un avertissement lorsque la taille du terminal est inférieure à 80×24. Pour mémoire, mon système d’exploitation est Windows, mais j’utilise une machine virtuelle pour exécuter Linux […]

forkpty – prise

J’essaie de développer un démon “telnet / serveur” simple qui doit exécuter un programme sur une nouvelle connexion de socket. Cette partie fonctionne bien. Mais je dois associer mon nouveau processus à un pty, car ce processus a des capacités de terminal (comme une readline). Le code que j’ai développé est (où socketfd est le […]

Threads – Accédez à la ressource en évitant la famine

Je sais que ce n’est pas un “site Web d’aide aux devoirs”, mais je suis devenu fou ces derniers jours parce que je dois implémenter l’access aux ressources pour éviter la famine et je ne vois pas comment le faire. Quelqu’un peut-il m’aider avec des exemples d’application ou de la documentation? L’affectation est la suivante: […]

Pourquoi j’ai défini l’échec d’arrière-plan de la fenêtre xlib transparente?

J’utilise le code suivant pour obtenir une fenêtre transparente, mais le résultat est noir. Qu’est-ce qui ne va pas avec moi? Et est-ce que quelqu’un peut me donner un exemple simple pour créer une fenêtre avec un fond transparent? MERCI! #include #include int main(int argc, char* argv[]) { Display* display = XOpenDisplay(NULL); XVisualInfo vinfo; XMatchVisualInfo(display, […]

Comment utiliser correctement copy_from_user?

J’essaie de copier une valeur de l’espace utilisateur vers l’espace kernel avec la fonction suivante: static ssize_t device_write(struct file *filp, const char *buff, size_t len, loff_t *off) { unsigned long copy=0; int desp=0; copy = copy_from_user(&desp, &len, 4); printk(KERN_ALERT “copy: %lx\n”, copy); printk(KERN_ALERT “desp: %d\n”, desp); } où “len” est la variable qui existe dans […]

Trous de fichiers et mémoire partagée sous Linux?

Depuis que j’ai lu le livre Linux Programming Interface (très bonne lecture), j’ai découvert les trous de fichiers sous Linux. Par conséquent, en utilisant des formats de fichier Unix tels que Ext4, vous pouvez ouvrir un nouveau fichier. 1000 octets recherchent à la position de 1000.000.000 et écrivez 1000 autres octets. de 1024 ou 512. […]

Pouvons-nous réinitialiser sigsetjmp pour qu’il renvoie «0» à nouveau (réinitialiser sigsetjmp)?

J’ai écrit un gestionnaire de fautes de segmentation, en utilisant sigsetjmp et siglongjmp. Une fois qu’il a été envoyé au gestionnaire de signal, j’appelle siglongjmp pour que l’instruction erronée soit ignorée. Le problème est que je veux encore une fois causer SIGSEGV et utiliser le même gestionnaire, mais sigsetjmp renverra 1. Comment réinitialiser sigsetjmp? Voici […]

Mmap renvoie-t-il toujours une adresse plus élevée?

Mmap (lorsqu’il est appelé avec MAP_ANONYMOUS, c’est-à-dire pour allouer de la mémoire) renvoie-t-il toujours une adresse de mémoire supérieure à celle d’un appel précédent? Si ce n’est pas le cas, y a-t-il un moyen de le faire retourner toujours une adresse plus élevée?

Effacer les données sur le port série sous Linux en C?

Je teste les programmes d’envoi et de réception avec le code La fonction main () est ci-dessous: #include “lib.h” int fd; int initport(int fd) { struct termios options; // Get the current options for the port… tcgetattr(fd, &options); // Set the baud rates to 19200… cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); // Enable the receiver and set […]