Это не ново для C ++. В C было два способа долгое время открывать файлы:
// Only on POSIX
int fdes = open("file.txt", O_RDONLY);
Или:
// Any hosted C environment, POSIX or otherwise
FILE *fp = fopen("file.txt", "rb");
Так зачем кому-то использовать версию, специфичную для POSIX? Ответ прост - существует большое количество системных вызовов, которые работают с дескрипторами файлов POSIX. Например, select
. Вы также можете создавать вещи, отличные от файлов, такие как каналы и сокеты, и передавать их другим процессам. Существует давняя традиция использования файловых дескрипторов POSIX, и у нас есть большое количество книг и ссылок о том, как с ними работать в сети.
Таким образом, компромисс между портативной версией и мощной версией. Так было всегда.
Другая половина этого - это то время, когда вы работаете с файлами в Linux, вы работаете с интерфейсом POSIX. Библиотеки просто скрывают это от вас. Boost использует это, среда выполнения C использует это, JRE использует это, и GHC использует это. Многие (большинство?) Языковые среды выполнения написаны на C, и прямой доступ к системным вызовам предпочтителен.