Perl中open和sysopen有什么区别?

时间:2011-09-20 14:01:48

标签: perl

似乎两者都做同样的事情,是吗?

有人能告诉我一个他们做不同工作的例子吗?

2 个答案:

答案 0 :(得分:18)

sysopenopen(2)内核系统调用的一个瘦包装器(参数直接对应),而open是一个更高级别的包装器,它允许你进行重定向,管道,等

除非您正在使用需要在open(2)时间传递某些特殊标志的特定设备,否则对于磁盘上的普通文件,您可以使用open

答案 1 :(得分:12)

引用perlopentut

  

如果你想要shell的方便,那么Perl的开放就是   绝对是要走的路。另一方面,如果你想更精细   精度比C的简单fopen(3S)提供你应该看   Perl的sysopen,它是open(2)系统调用的直接挂钩。   这确实意味着它涉及更多,但这是价格   精度。

由于Perl是用C语言编写的,因此两种方法都可能最终进行open(2)系统调用。不同之处在于,Perl中的open()内置了一些细节,使打开管道重定向 非常open()带走了一些灵活性。它没有Fcntl中可用的sysopen()功能,也没有屏蔽功能。

大多数情况只需要open()