Windows中的Syscall库

问题描述 投票:0回答:1

是否可以将syscall中的以下功能转换为windows.h中的功能?如果是这样,有信息的人可以帮助我,我在google上找不到任何东西。

static inline int __setns(int fd, int nstype) {
    return syscall(__NR_setns, fd, nstype);

}

static inline int __unshare(int flags) {
    return syscall(__NR_unshare, flags);
}

static inline int __accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags) {
    return syscall(__NR_accept4, sockfd, addr, addrlen, flags);
}

static inline int __dup3(int oldfd, int newfd, int flags) {
    return syscall(__NR_dup3, oldfd, newfd, flags);
}

static inline ssize_t __readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsiz) {
    return syscall(__NR_readlinkat, dirfd, pathname, buf, bufsiz);
}

static inline int __symlinkat(const char *target, int newdirfd, const char *linkpath) {
    return syscall(__NR_symlinkat, target, newdirfd, linkpath);
}

static inline int __linkat(int olddirfd, const char *oldpath,
        int newdirfd, const char *newpath, int flags) {
    return syscall(__NR_linkat, olddirfd, oldpath, newdirfd, newpath, flags);
}

static inline int __inotify_init1(int flags) {
    return syscall(__NR_inotify_init1, flags);
}

static inline int __faccessat(int dirfd, const char *pathname, int mode, int flags) {
    return syscall(__NR_faccessat, dirfd, pathname, mode, flags);
}
c++ c system-calls
1个回答
0
投票

不,不可能。这些是Linux特定的系统调用,在其他操作系统上没有直接的“转换”。

您在Windows下唯一能做的就是尝试并模拟这些系统调用,但这只能进行得很远,您将无法模拟所有这些系统调用。 Cygwin就是一个很好的例子,它可以在Windows上模拟许多标准的Linux系统调用,就像在任何Linux系统中一样提供the unistd.h header

© www.soinside.com 2019 - 2024. All rights reserved.