C语言,有关linux系统调用。

asmlinkage long sys_mycall(int n)
{

if(n%2==0)
return 1;
else
return 0;
}

调用代码是这样的:
#include<stdio.h>
int main()
{
int n;
printf("请输入一个数字:");
scanf("%d",&n);
if(syscall(345,n))
printf("这是一个偶数\n");
else
printf("这是一个奇数\n");

}

但结果是不管输入什么数字,都显示这是一个偶数?
怎么回事?怎么改?

试试 man syscall 出来显示的意思好像是 如果调用成功返回0 失败返回-1. 而syscall(int n,...)应该来说只要输入第一项是int型的 就会返回成功的。 你应该使用调用的是函数asmlinkage long sys_mycall(int n)
而不是syscall()。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-01
.