似乎两者都做同样的事情,是吗?
有人能告诉我一个他们做不同工作的例子吗?
答案 0 :(得分:18)
sysopen
是open(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()
。