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