Tam "s syscall ktorý umožňuje nepriame systémové volania v systéme Linux. Aké sú dôvody na jeho použitie - a prečo je to lepšie ako priame volanie funkcie?
odpovede:
11 pre odpoveď č. 1Niekedy jadro pridáva systémové volania a chvíľu trvá knižnica C, ktorá ich podporuje.
Alebo možno kompilujete na starú linuxovú distribúciu, ale chcete spustiť novšiu.
Príklad kód:
// 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);
Vo všeobecnosti však nie je výhoda používania syscall
ak má knižnica C v kompilačnom prostredí to, čo potrebujete. (Jedna vec je dokonca menej prenosná ako používanie rozhrania špecifického pre systém Linux, pretože čísla systémových volaní sa líšia podľa procesora.)