On 24/09/2010 05:55, Nguyen Thai Ngoc Duy wrote:
>
>>> "Everything" thì chắc chắn cả hai đều sai. Network interface trong
>>> Linux không phải là "file". Gần mức "everything is a file" nhất chắc
>>> là Plan 9.
>>>       
>> Hiểu thoáng hơn một chút có lẽ coi network interface là một số những "file"
>> trong /proc/net/
>> Không rõ hiểu vậy có đúng không?
>>     
> Không. Socket không phải là file trong Linux. Điều khiển network
> interface (eth0, eth1, lo...) hoặc thông qua netlink, hoặc ioctl _trên
> socket handle_. Hoàn toàn không có dính đến file. Kiến trúc net của
> Linux, nếu nhớ không nhầm, cũng không sử dụng VFS như block hay char
> device vẫn dùng.
>   
Mình tham gia tranh luận một tý. Socket là kiểu thứ năm trong file
system của UNIX và do BSD thêm vào [1]  (trước đó chỉ có 4 kiểu là
ordinary-data file, directory, special-device file và symbolic link).
Ngoài ra API của socket cũng có signature giống như API của file. Socket
cũng có cơ chế bảo vệ giống như file. Vì thế socket là một mở rộng của
FS trong UNIX.

Theo quan điểm của mình thì có lẽ nói "almost things in UNIX/Linux are
file" chắc chắn là không ngoa. Cách nói như Hưng thì đúng là trong
jargon của "Unixians" đấy. Các bạn có thể xem ở [2] và [3].

[1] http://en.wikipedia.org/wiki/Berkeley_sockets
[2] http://en.wikipedia.org/wiki/Unix_architecture
[3] http://ph7spot.com/musings/in-unix-everything-is-a-file

Quang
_______________________________________________
POST RULES : http://wiki.hanoilug.org/hanoilug:mailing_list_guidelines
_______________________________________________
HanoiLUG mailing lists: http://lists.hanoilug.org/
HanoiLUG wiki: http://wiki.hanoilug.org/
HanoiLUG blog: http://blog.hanoilug.org/

Trả lời cho