2012-04-05 4 views
0

Ich möchte wissen, ob wir tatsächlich eine Problemumgehung/Alias ​​für das Schließen des Dateideskriptors erstellen können. Das heißt, close (fd) sollte etwas internes zum Stream tun, der mit dem fd (Dateideskriptor) verbunden ist. Können wir diese Funktionalität der Close-Funktion erreichen/bereitstellen, ohne die Close-Funktion des Datei-Deskriptors zu verwenden?gibt es einen Weg zur Umgehung des Dateideskriptors cretaed mit Hilfe der Rohrfunktion

Ich möchte dies in Szenario, wo ich nicht schreiben möchte schreiben Ende der Rohr (erstellt mit Pipe() -Funktion), aber das andere Ende sollte nicht bewusst sein. Das andere Ende des Rohres sollte sich so anfühlen, als sei das gegenüberliegende Ende tatsächlich geschlossen.

+3

Können Sie erklären, warum Sie dies tun müssen? – tangrs

Antwort

0

Vielleicht suchen Sie nach der shutdown Funktion. Aber das wird für Vollduplex-Verbindungen verwendet, um anzuzeigen, dass die Daten in einer Richtung enden.

Vielleicht kann eine unidirektionale Leitung zum Schreiben mit shutdown vom Schreibende heruntergefahren werden? Nie davon gehört.

Das wäre am nächsten damit, den Zustand einer Verbindung in einer Weise zu manipulieren, die dem Schließen ähnelt, ohne den Dateideskriptor tatsächlich zu entfernen. (Wenn diese Operation für diese Objekte möglich ist.)

Sie gehen voran und sind das Versuchskaninchen. ;)

+2

'shutdown' funktioniert auf Sockets, nicht auf Pipes. –

+0

@ kaz: Können wir Shutdown-Funktion auf Pfeifen verwenden ??? als einer unserer Freunde erwähnt, dass es nicht mit Rohren verwendet werden kann – chaitu

0

#include<stdio.h> 
int open(const char *p,int f) { 
    printf("we are in our open()\n"); 
} 
int close() { 
    printf("we are in our close()\n"); 
} 

main() { 
    open("test",1); 
    close(); 
    return 0; 
} 

Picked from here

„Wenn Sie eine von außen sichtbare Funktion mit dem gleichen Namen als Systemfunktion erstellen, wird Ihre Funktion _instead_of_ die ursprüngliche Systemfunktion aufgerufen werden.“