Quindi questo è lo scenario che sto guardando:collegamento a più librerie, una delle quali si avvolge una serie di chiamate di sistema
Ho 3 biblioteche - A, B e C.
- La libreria A implementa la funzione
foo()
e la espone come un'API. - La funzione
foo()
chiama la chiamata POSIXwrite()
per scrivere alcuni dati. - La libreria B scrive un wrapper per la chiamata glibc
write()
utilizzando l'opzione di collegamento del linker. - collegamenti libreria C sia per A e B.
Qualsiasi write()
chiamata che la libreria C rende otterrà intercettato dal wrapper biblioteca B. Ma, la mia domanda è, se libreria C chiama foo()
, sarà il write()
call inside foo() viene intercettato da B?
Prova a scrivere il codice e guarda cosa succede, questo è quello che vorrei fare. – fonZ
La funzione glibc 'write' è un wrapper per la vera chiamata di sistema. –
Grazie, @ JonathanCruz. Si trattava di librerie ipotetiche di cui stavo parlando, e il comportamento della libreria wrapper in uno scenario del genere sarebbe stato un fattore decisivo per vedere se dovevo andare a scriverlo. Tuttavia, ora sto lavorando a un caso di test più piccolo e ora. Ho solo pensato che il passaggio allo stackoverflow potrebbe dare una risposta più rapida :) – crazyg33k