des kheys chaud en info
Supprimé- 1
bonjour mes rheys je suis bloqué sur un exo en info
Ecrire un programme tube_com_process1.exe qui crée un tube et y écrit 10 caractères
("0123456789" en une seule écriture). Le programme appelle ensuite une fonction void
lecture(int fd) qui lit le contenu du tube caractère par caractère jusqu'à la fin de fichier. Pour
faire l’affichage des caractères lus dans lecture, vous utiliserez aussi la fonction write sur le
descripteur de fichier de la sortie standard.
Question 1 : un seul processus sera mis en jeu et sera à la fois écrivain et lecteur du tube.
Question 2 : Ecrire un programme tube_com_process2.exe. Pour cette seconde version, le
processus père sera l’écrivain dans le tubeet le processus fils fera appel à la fonction lecture
mise en place précédemmen
on a jamais vu ça en cours elle nous l'a lâché comme ça...
Le 05 décembre 2022 à 14:25:49 :
C'est quel langage ? du C++ ?
en C
Le 05 décembre 2022 à 14:26:18 :
Demande a OpenAi il va te faire ton exo
c'est pas que en python ?
Le 05 décembre 2022 à 14:26:18 :
Demande a OpenAi il va te faire ton exo
c'est pas que en python ?
C'est un stream version golem prof ?
Le 05 décembre 2022 à 14:28:02 :
Un tube ? Qué ?
C'est un stream version golem prof ?
ayaa non le shill
- include <stdio.h>
- include <unistd.h>
- include <string.h>
- include <sys/types.h>
- include <sys/stat.h>
- include <fcntl.h>
- define BUF_SIZE 10
void lecture(int fd) {
char buf[BUF_SIZE];
ssize_t nbytes;
// Lire le contenu du tube caractère par caractère jusqu'à la fin de fichier.
while ((nbytes = read(fd, buf, BUF_SIZE)) > 0) {
// Écrire les caractères lus sur la sortie standard.
write(STDOUT_FILENO, buf, nbytes);
}
}
int main() {
int fd;
// Créer un tube avec les droits par défaut.
if (mkfifo("/tmp/my_fifo", 0666) < 0) {
perror("mkfifo");
return 1;
}
// Ouvrir le tube en mode écriture seule.
if ((fd = open("/tmp/my_fifo", O_WRONLY)) < 0) {
perror("open");
return 1;
}
// Écrire "0123456789" dans le tube en une seule écriture.
if (write(fd, "0123456789", BUF_SIZE) < 0) {
perror("write");
return 1;
}
// Fermer le tube.
close(fd);
// Ouvrir le tube en mode lecture seule.
if ((fd = open("/tmp/my_fifo", O_RDONLY)) < 0) {
perror("open");
return 1;
}
// Lire et afficher le contenu du tube.
lecture(fd);
// Fermer le tube.
close(fd);
return 0;
}
Ce programme crée un tube nommé /tmp/my_fifo et y écrit les caractères "0123456789" en une seule écriture. Il appelle ensuite la fonction lecture qui lit le contenu du tube caractère par caractère jusqu'à la fin de fichier et affiche les caractères lus sur la sortie standard.
Note : le chemin du tube peut être modifié selon les besoins. Il est également possible d'utiliser des options de création de tube différentes en utilisant les constantes de la bibliothèque sys/stat.h.
Le 05 décembre 2022 à 14:39:48 :
- include <stdio.h>
- include <unistd.h>
- include <string.h>
- include <sys/types.h>
- include <sys/stat.h>
- include <fcntl.h>
- define BUF_SIZE 10
void lecture(int fd) {
char buf[BUF_SIZE];
ssize_t nbytes;// Lire le contenu du tube caractère par caractère jusqu'à la fin de fichier.
while ((nbytes = read(fd, buf, BUF_SIZE)) > 0) {
// Écrire les caractères lus sur la sortie standard.
write(STDOUT_FILENO, buf, nbytes);
}
}int main() {
int fd;// Créer un tube avec les droits par défaut.
if (mkfifo("/tmp/my_fifo", 0666) < 0) {
perror("mkfifo");
return 1;
}// Ouvrir le tube en mode écriture seule.
if ((fd = open("/tmp/my_fifo", O_WRONLY)) < 0) {
perror("open");
return 1;
}// Écrire "0123456789" dans le tube en une seule écriture.
if (write(fd, "0123456789", BUF_SIZE) < 0) {
perror("write");
return 1;
}// Fermer le tube.
close(fd);// Ouvrir le tube en mode lecture seule.
if ((fd = open("/tmp/my_fifo", O_RDONLY)) < 0) {
perror("open");
return 1;
}// Lire et afficher le contenu du tube.
lecture(fd);// Fermer le tube.
close(fd);return 0;
}
mec tu me sauve la vie merci infiniment
Pour la question 2
- include <stdio.h>
- include <unistd.h>
- include <string.h>
- include <sys/types.h>
- include <sys/stat.h>
- include <fcntl.h>
- include <sys/wait.h>
- define BUF_SIZE 10
void lecture(int fd) {
char buf[BUF_SIZE];
ssize_t nbytes;
// Lire le contenu du tube caractère par caractère jusqu'à la fin de fichier.
while ((nbytes = read(fd, buf, BUF_SIZE)) > 0) {
// Écrire les caractères lus sur la sortie standard.
write(STDOUT_FILENO, buf, nbytes);
}
}
int main() {
int fd;
pid_t pid;
// Créer un tube avec les droits par défaut.
if (mkfifo("/tmp/my_fifo", 0666) < 0) {
perror("mkfifo");
return 1;
}
// Ouvrir le tube en mode écriture seule.
if ((fd = open("/tmp/my_fifo", O_WRONLY)) < 0) {
perror("open");
return 1;
}
// Créer un processus fils.
pid = fork();
if (pid < 0) {
perror("fork");
return 1;
} else if (pid == 0) {
// Dans le processus fils :
// Fermer le descripteur de fichier du tube en écriture (inutile dans le fils).
close(fd);
// Ouvrir le tube en mode lecture seule.
if ((fd = open("/tmp/my_fifo", O_RDONLY)) < 0) {
perror("open");
return 1;
}
// Lire et afficher le contenu du tube.
lecture(fd);
// Fermer le tube.
close(fd);
return 0;
} else {
// Dans le processus père :
// Écrire "0123456789" dans le tube en une seule écriture.
if (write(fd, "0123456789", BUF_SIZE) < 0) {
perror("write");
return 1;
}
// Attendre la fin du processus
Le 05 décembre 2022 à 14:27:07 :
Le 05 décembre 2022 à 14:26:18 :
Demande a OpenAi il va te faire ton exoc'est pas que en python ?
Il fait tout les langages qui existe
je m'attendais pas à avoir une réponse aussi complète
- 1
Données du topic
- Auteur
- Karabistouilled
- Date de création
- 5 décembre 2022 à 14:24:47
- Date de suppression
- 28 janvier 2023 à 11:51:00
- Supprimé par
- Auteur
- Nb. messages archivés
- 17
- Nb. messages JVC
- 17