Второй аргумент ...
указывает на функцию Variadi c, которая принимает переменное количество аргументов; распространенными примерами являются printf()
и т. д. По замыслу, в то время как количество и типы аргументов неизвестны ни одной переменной c функции, для syscall()
правильное количество аргументов и типы указываются c для каждого системного вызова, который индексируется __sysno
и должен быть явной константой, например SYS_exit
, найденной в системном заголовке.
Хотя количество аргументов в основном неограниченно, существуют практические ограничения, соображения производительности и различия в арках; Короче говоря, чем меньше, тем лучше.
Обратите внимание, что функции Variadi c могут быть весьма универсальными. В качестве одного примера: создайте свою собственную (error_message + exit) процедуруariadi c, которая объединяет статус ошибки в качестве первого аргумента, за которым следует printf
args; см. man stdarg
и такие службы, как vdprintf () и vfprintf (). Двойные преимущества включают более сжатый источник и меньший текстовый сегмент.