Linux 如何从终端使用自定义系统调用?

Linux 如何从终端使用自定义系统调用?,linux,bash,shell,linux-kernel,system-calls,Linux,Bash,Shell,Linux Kernel,System Calls,我的系统调用采用整数并返回long。我可以在C代码中使用它,比如syscall(549,1)。但是我想从终端使用它,而不是从C代码。您能帮助我吗?您无法直接使用shell中的系统调用。尽管如此,您可以编写一个简单的C程序,编译它并将其位置直接添加到路径,或者放入/usr/local/bin。然后您将能够直接从shell调用这个二进制文件 C程序的代码如下所示: #include <stdio.h> #include <stdlib.h> #include <unis

我的系统调用采用整数并返回long。我可以在C代码中使用它,比如
syscall(549,1)
。但是我想从终端使用它,而不是从C代码。您能帮助我吗?

您无法直接使用shell中的系统调用。尽管如此,您可以编写一个简单的C程序,编译它并将其位置直接添加到路径,或者放入/usr/local/bin。然后您将能够直接从shell调用这个二进制文件

C程序的代码如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    printf("%ld\n", syscall(549, (int) strtol(argv[1], NULL, 0)));
    return EXIT_SUCCESS;
}
#包括
#包括
#包括
int main(int argc,char*argv[]){
printf(“%ld\n”,syscall(549,(int)strtol(argv[1],NULL,0));
返回退出成功;
}

shell不提供进行任意系统调用的方法。感谢您的回复。另外,我如何在C代码中使用我的syscall及其名称,而不是编写syscall(549,1)?将其封装在调用
syscall(549,1)
@MarcAryan的函数中如果您认为答案是问题的最佳解决方案,您可以接受:)