Jef*_*eff 6 c linux kernel system-calls parameter-passing
我做了一个没有参数的基本helloWorld系统调用示例,只是:
int main()
{
syscall(__NR_helloWorld);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但现在我想弄清楚如何将实际参数传递给系统调用(即a long).准确的格式是什么,我尝试过:
int main()
{
long input = 1;
long result = syscall(__NR_someSysCall, long input, long);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它需要a long并返回a long,但它没有正确编译; 什么是正确的语法?
删除类型名称。这只是一个函数调用。例子:
#include <sys/syscall.h>
#include <unistd.h>
int main( int argc, char* argv[] ) {
char str[] = "boo\n";
syscall( __NR_write, STDOUT_FILENO, str, sizeof(str) - 1 );
return 0;
}
Run Code Online (Sandbox Code Playgroud)