В последнее время я использую большое количество файловых дескрипторов, и мне было интересно, почему они реализованы как целые числа?
Это означает, что их легко путать для других целых чисел, и нет никакого способа узнать, без контекста, что они собой представляют, что они указывают, открыты ли они и т.д.
В C, FILE
- непрозрачный тип struct
. Многие люди также typedef
, например. status_t
как целое число, поэтому их функция очевидна. Кажется, лучше всего либо реализовать их как непрозрачный тип, либо (например, на С++) в качестве класса, который может позаботиться о некоторой реализации, а также очистить бит namespace
(вызов pipe()
или open()
кажется настолько безобидным, и это не очевидно, что вы прокладываете или открываете без контекста). Как, например, std::file_descriptor
, с конструкторами /factory функции для создания труб или открытия файлов и т.д.
Я надеюсь, что это будет тема для этого сайта; Я попытался сформулировать это как "Почему было принято это конкретное решение?" Если кто-нибудь знает где-нибудь, это будет лучше, пожалуйста, дайте мне знать.