Как вы выбираете, использовать или нет системный вызов или библиотечную функцию в качестве системного программиста?

#c #system

Вопрос:

Когда вы разрабатываете системную программу, такую как ls, who, more и т. Д. обычно существует несколько способов сделать что — то, связанное с системой, например, открыть файл-открыть или открыть, например. Как, будучи разработчиком, вы решаете, использовать или нет библиотечную функцию в сравнении с системным вызовом? Я понимаю, что программисты ядра, как правило, используют системные вызовы, поскольку функции более высокого уровня недоступны ядру, и что разработчики приложений могут свободно выбирать вызовы более высокого уровня, но как насчет системных программистов, сидящих посередине? Существует ли четкий набор критериев?

Комментарии:

1. Не используйте системные вызовы напрямую. Если вы не разрабатываете стандартную библиотеку (например, libc) или не реализуете что-то очень конкретное, использующее системный вызов, который не реализован стандартной библиотекой (например, kexec).

2. Вы хотите сделать свою программу как можно более портативной. Поэтому вы хотите как можно больше полагаться на абстракции. Если определенная функциональность заключена в библиотечную функцию, вам лучше использовать ее и не заботиться о том, реализована ли она с помощью системного вызова или нет.

3. @Cheatah Я немного отредактировал использование разработчиком ядра системных вызовов