Was ist der Unterschied zwischen open und sysopen in Perl?

8

Es scheint, dass beide dasselbe tun, nicht wahr?

Kann mir jemand ein Beispiel zeigen, wo sie andere Arbeit machen?

    
lexer 20.09.2011, 14:01
quelle

2 Antworten

18

sysopen ist ein dünner Wrapper um den Kernel-Systemaufruf open(2) (die Argumente entsprechen direkt), während open ein Wrapper auf höherer Ebene ist, mit dem Sie Umleitungen, Piping usw. durchführen können.

Sofern Sie nicht mit einem bestimmten Gerät arbeiten, für das einige spezielle Flags an open(2) time übergeben werden müssen, sollten Sie für normale Dateien auf der Festplatte mit open in Ordnung sein.

    
Blagovest Buyukliev 20.09.2011 14:05
quelle
12

Um perlopentut zu zitieren:

  

Wenn Sie die Bequemlichkeit der Shell wollen, dann ist Perl's offen   definitiv der Weg zu gehen. Auf der anderen Seite, wenn Sie feiner wollen   Genauigkeit als C's simplistic fopen (3S) bietet, sollten Sie schauen   Perls sysopen, das ein direkter Haken in den offenen (2) Systemaufruf ist.   Das bedeutet, es ist ein bisschen mehr beteiligt, aber das ist der Preis von   Präzision.

Da Perl in C geschrieben ist, führen beide Methoden wahrscheinlich zum open(2) Systemaufruf. Der Unterschied ist, dass open() in Perl einige Feinheiten eingebaut hat, die das Öffnen , Piping und Umleitung sehr ermöglichen einfach. Gleichzeitig nimmt open() etwas Flexibilität weg. Es verfügt nicht über die Funktion Fcntl , die in sysopen() verfügbar ist, und auch nicht über die Maskierungsfunktion.

Die meisten Situationen benötigen nur open() .

    
Jonathan M 20.09.2011 14:08
quelle

Tags und Links