Hay syscall que permite llamadas al sistema indirecto en Linux. ¿Cuáles son las razones para usarlo y por qué es mejor que la llamada directa a la función?¿Cuáles son las razones para usar "syscall" en lugar de llamar a la función directamente?
8
A
Respuesta
11
A veces, el kernel agrega llamadas al sistema y la biblioteca C tarda un tiempo en admitirlas.
O tal vez está compilando en una distribución anterior de Linux, pero quiere ejecutar en uno más nuevo.
código Ejemplo:
// syscall 277 is sync_file_range() on x86_64 Linux. The header
// files lack it on scc-suse10 where we compile, but the
// performance benefits are substantial, so we just call it
// directly. FIXME someday.
#define SYNC_FILE_RANGE_WRITE 2
syscall(277, fd, done, n, SYNC_FILE_RANGE_WRITE);
Pero, en general, no hay ninguna ventaja de utilizar syscall
si la biblioteca de C en su entorno de compilación tiene lo que necesita. (Por un lado, es incluso menos portátil que usar una interfaz específica de Linux, ya que los números de llamadas del sistema varían según la CPU.)
Cuestiones relacionadas
- 1. ¿Cuáles son las razones para la subclasificación de NSArrayController?
- 2. ¿Cuáles deberían ser las razones para usar OpenSL ES en lugar de AudioTrack en Android?
- 3. Además de singletons, ¿cuáles son algunas de las razones convincentes para usar métodos estáticos en PHP?
- 4. ¿Cuáles son las razones para usar dos programas por lotes en Windows?
- 5. ¿Cuáles son las razones para emitir un puntero vacío?
- 6. ¿Cuáles son las razones para usar el atributo de id con fines de CSS?
- 7. Enlazando directamente a un SWF, ¿cuáles son las desventajas?
- 8. ¿Cuáles son algunas de las razones por las cuales un único desarrollador debe usar TDD?
- 9. ¿Cuáles son las clases posibles para la función OpenThemeData?
- 10. ¿Por qué invocar "aplicar" en lugar de llamar a la función directamente?
- 11. ¿Cuáles son las razones técnicas para evitar inyectar el contenedor de servicio en lugar de los servicios individuales?
- 12. ¿Cuáles son las ventajas de usar Spring Data neo4j sobre simplemente usar neo4j directamente?
- 13. ¿Cuáles son las razones para que las Excepciones no sean compatibles con las cláusulas throws?
- 14. ¿Cuáles son las razones imperiosas para elegir SQL Server 2008 en 2005?
- 15. ¿Razones para no usar clase abstracta en lugar de interfaz?
- 16. ¿Cuáles son las razones para usar o no usar el gettext nativo de PHP versus una autoconstrucción?
- 17. ¿Cuáles son las razones de peso para usar un MemoryCache sobre una llanura de edad Dictionary <string, object>
- 18. node.js - cuáles son las ventajas de usar jade
- 19. ¿Cuáles son las ventajas de usar Qt?
- 20. ¿Cuáles son las ventajas de usar Automapper?
- 21. ¿Cuáles son las implicaciones de usar const estático en lugar de #define?
- 22. ¿Cuáles son buenas razones para elegir TIMESTAMP sobre las columnas DATETIME en MySQL?
- 23. Usar una cadena para llamar a la función en Python
- 24. Razones para usar las constantes de NSString sobre las enumeraciones
- 25. ¿Cuáles son las ventajas de usar XSL en Sitecore en lugar de C#?
- 26. ¿Cuáles son las razones originales para ToString() en Java y .NET?
- 27. ¿Cuáles son las reglas para usar^para apuntar al valor?
- 28. ¿Cuáles son las ventajas de usar ems en lugar de% en CSS?
- 29. ¿Cuáles son algunas de las desventajas de usar una referencia en lugar de un puntero?
- 30. PHP - Razones para usar Iterators?
No deben variar según la CPU, solo mediante la implementación del sistema operativo. – Wug
@Wug: los números de syscall reales varían en x86, x86_64, ARM, PPC, etc. – Nemo
Eso sería la implementación del sistema operativo. No dependen de la CPU de ninguna manera, están definidos en un encabezado en algún lugar y compilados en el kernel. – Wug