Bonjour � tous,
J'essaie de faire un lseek sur un tube.
Je comprends que cela ne fonctionne pas car le pipe fonction en flux de donn�es donc impossible de positionner le "curseur". En lecture je le comprends mais en �criture est-ce possible ?
J'aimerai avoir des �l�ments th�oriques pour le comprendre.
J'ai fait ce petit programme pour ma d�monstration :
Code c : S�lectionner tout - Visualiser dans une fen�tre � part
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 #include "sys.h" int main(void) { // cette variable contiendra les descripteurs de lecture [0] et écriture [1] du tube int tube[2]; // création du tube assert(pipe(tube) == 0); int ret_lseek = 0; // Tentative d'utiliser lseek sur le descripteur de lecture ret_lseek = lseek(tube[0], 1, SEEK_CUR); printf("La fonction lseek sur le descripteur de lecture retourne : %d\n", ret_lseek); perror("lseek()"); if(errno == ESPIPE) puts("Erreur ESPIPE : fd est associé à un tube (pipe), une socket, ou une file FIFO."); puts(""); // Tentative d'utiliser lseek sur le descripteur d'écriture ret_lseek = lseek(tube[1], 1, SEEK_CUR); printf("La fonction lseek sur le descripteur d'écriture retourne : %d\n", ret_lseek); perror("lseek()"); if(errno == ESPIPE) puts("Erreur ESPIPE : fd est associé à un tube (pipe), une socket, ou une file FIFO."); return 0; }
En l'ex�cutant j'ai bien un espipe sur lecture et �criture.
Comment faire pour �viter l'erreur ? Je dois faire un unlink ?
Merci pour votre aide !
Partager