我正在测试K&R C书籍中的一些代码示例,其中一个程序使用了 #include "syscalls.h"
,但编译器抱怨无法找到该文件。我应该用什么替代 syscalls.h
?它已经被弃用了吗?
我正在测试K&R C书籍中的一些代码示例,其中一个程序使用了 #include "syscalls.h"
,但编译器抱怨无法找到该文件。我应该用什么替代 syscalls.h
?它已经被弃用了吗?
你应该使用unistd.h
代替。
查看手册以获取您尝试进行的调用,因为它是系统相关的并且可能会有所不同。
sys/syscall.h
。unistd.h
对于大多数所需的系统调用都有封装。man syscall
对于从事以下内容的人也会很有帮助:
syscall(SYS_ble)
manpages 4.04说:
在glibc中,您需要使用以下内容:
#define _GNU_SOURCE /* See feature_test_macros(7) */ #include <unistd.h> #include <sys/syscall.h> /* For SYS_xxx definitions */ long syscall(long number, ...);
Symbolic constants for system call numbers can be found in the header file
<sys/syscall.h>
.
syscall
函数需要使用unistd.h
SYS_
宏需要使用sys/syscall.h
syscall
,因此这只是 glibc的扩展功能 。/usr/include/syscall.h
/usr/include/sys/syscall.h
第一个只包含:
#include <sys/syscall.h>
这样可以让你在代码中使用:
#include <syscall.h>
但我无法找到任何文档,因此建议您仅使用文档中记录的#include <sys/syscall.h>
。
只需使用 #include <sys/syscall.h>
。
你使用的是哪个编译器?