unistd.h文件

转载地址:http://baike.baidu.com/link?url=nEyMMFYevs4yoHgQUs2bcfd5WApHUKx0b1ervi7ulR09YhtqC4txmvL1Ce3FS8xTKtWQuvmEBHC9xezMGpvGHa

unistd.h 是  C 和  C++ 程序设计语言中提供对  POSIX 操作系统  API 的访问功能的 头文件的名称。该头文件由 POSIX.1 标准(单一UNIX规范的基础)提出,故所有遵循该标准的操作系统和 编译器均应提供该头文件(如 Unix 的所有官方版本,包括  Mac OS XLinux 等)。
对于类 Unix 系统,unistd.h 中所定义的接口通常都是大量针对 系统调用的封装( 英语:wrapper functions),如 fork、pipe 以及各种  I/O 原语(read、write、close 等等)。
类似于  Cygwin 和  MinGW 的 Unix 兼容层也提供相应版本的 unistd.h。

unistd.h 源码

#ifndef _UNISTD_H
#define _UNISTD_H
#include <features.h>
#ifdef __cplusplus
extern "C" {
#endif
#include <_ansi.h>
#include <sys/types.h>
#include <sys/_types.h>
#define __need_size_t
#define __need_ptrdiff_t
#include <stddef.h>
extern char **environ;
void    _EXFUN(_exit, (int __status ) _ATTRIBUTE ((noreturn)));
int    _EXFUN(access,(const char *__path, int __amode ));
unsigned  _EXFUN(alarm, (unsigned __secs ));
int     _EXFUN(chdir, (const char *__path ));
int     _EXFUN(chmod, (const char *__path, mode_t __mode ));
int     _EXFUN(chown, (const char *__path, uid_t __owner, gid_t __group ));
int     _EXFUN(chroot, (const char *__path ));
int     _EXFUN(close, (int __fildes ));
char    _EXFUN(*ctermid, (char *__s ));
char    _EXFUN(*cuserid, (char *__s ));
int     _EXFUN(dup, (int __fildes ));
int     _EXFUN(dup2, (int __fildes, int __fildes2 ));
int     _EXFUN(execl, (const char *__path, const char *, ... ));
int     _EXFUN(execle, (const char *__path, const char *, ... ));
int     _EXFUN(execlp, (const char *__file, const char *, ... ));
int     _EXFUN(execv, (const char *__path, char * const __argv[] ));
int     _EXFUN(execve, (const char *__path, char * const __argv[], char * const __envp[] ));
int     _EXFUN(execvp, (const char *__file, char * const __argv[] ));
int     _EXFUN(fchdir, (int __fildes));
int     _EXFUN(fchmod, (int __fildes, mode_t __mode ));
int     _EXFUN(fchown, (int __fildes, uid_t __owner, gid_t __group ));
pid_t   _EXFUN(fork, (void ));
long    _EXFUN(fpathconf, (int __fd, int __name ));
int     _EXFUN(fsync, (int __fd));
int     _EXFUN(ftruncate, (int __fd, off_t __length));
char    _EXFUN(*getcwd, (char *__buf, size_t __size ));
int    _EXFUN(getdomainname ,(char *__name, size_t __len));
gid_t   _EXFUN(getegid, (void ));
uid_t   _EXFUN(geteuid, (void ));
gid_t   _EXFUN(getgid, (void ));
int     _EXFUN(getgroups, (int __gidsetsize, gid_t __grouplist[] ));
int     _EXFUN(__gethostname, (char *__name, size_t __len));
char    _EXFUN(*getlogin, (void ));
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS)
int _EXFUN(getlogin_r, (char *name, size_t namesize) );
#endif
char     _EXFUN(*getpass, (__const char *__prompt));
int  _EXFUN(getpagesize, (void));
pid_t   _EXFUN(getpgid, (pid_t));
pid_t   _EXFUN(getpgrp, (void ));
pid_t   _EXFUN(getpid, (void ));
pid_t   _EXFUN(getppid, (void ));
uid_t   _EXFUN(getuid, (void ));
char *    _EXFUN(getusershell, (void));
char    _EXFUN(*getwd, (char *__buf ));
int     _EXFUN(isatty, (int __fildes ));
int     _EXFUN(lchown, (const char *__path, uid_t __owner, gid_t __group ));
int     _EXFUN(link, (const char *__path1, const char *__path2 ));
int    _EXFUN(nice, (int __nice_value ));
off_t   _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
long    _EXFUN(pathconf, (const char *__path, int __name ));
int     _EXFUN(pause, (void ));
int     _EXFUN(pipe, (int __fildes[2] ));
ssize_t _EXFUN(pread, (int __fd, void *__buf, size_t __nbytes, off_t __offset));
ssize_t _EXFUN(pwrite, (int __fd, const void *__buf, size_t __nbytes, off_t __offset));
_READ_WRITE_RETURN_TYPE _EXFUN(read, (int __fd, void *__buf, size_t __nbyte ));
int     _EXFUN(readlink, (const char *path, char *buf, size_t bufsiz));
int     _EXFUN(rmdir, (const char *__path ));
void *  _EXFUN(sbrk,  (ptrdiff_t __incr));
int     _EXFUN(setegid, (gid_t __gid ));
int     _EXFUN(seteuid, (uid_t __uid ));
int     _EXFUN(setgid, (gid_t __gid ));
int     _EXFUN(setpgid, (pid_t __pid, pid_t __pgid ));
int     _EXFUN(setpgrp, (void ));
pid_t   _EXFUN(setsid, (void ));
int     _EXFUN(setuid, (uid_t __uid ));
unsigned _EXFUN(sleep, (unsigned int __seconds ));
void    _EXFUN(swab, (const void *, void *, ssize_t));
int     _EXFUN(symlink, (const char *oldpath, const char *newpath));
long    _EXFUN(sysconf, (int __name ));
pid_t   _EXFUN(tcgetpgrp, (int __fildes ));
int     _EXFUN(tcsetpgrp, (int __fildes, pid_t __pgrp_id ));
int     _EXFUN(truncate, (const char *, off_t __length));
char *  _EXFUN(ttyname, (int __fildes ));
int     _EXFUN(ttyname_r, (int __fildes, char *__buf, size_t __len));
int     _EXFUN(unlink, (const char *__path ));
int     _EXFUN(usleep, (__useconds_t __useconds));
int     _EXFUN(vhangup, (void ));
_READ_WRITE_RETURN_TYPE _EXFUN(write, (int __fd, const void *__buf, size_t __nbyte ));
extern char *optarg;            /** getopt(3) external variables */
extern int optind, opterr, optopt;
int     getopt(int, char * const [], const char *);
extern int optreset;            /** getopt(3) external variable */
#ifndef        _POSIX_SOURCE
pid_t   _EXFUN(vfork, (void ));
extern char *suboptarg;            /** getsubopt(3) external variable */
int     getsubopt(char **, char * const *, char **);
#endif /** _POSIX_SOURCE */
/** Provide prototypes for most of the _<systemcall> names that are
provided in newlib for some compilers.  */
int     _EXFUN(_close, (int __fildes ));
pid_t   _EXFUN(_fork, (void ));
pid_t   _EXFUN(_getpid, (void ));
int     _EXFUN(_link, (const char *__path1, const char *__path2 ));
off_t   _EXFUN(_lseek, (int __fildes, off_t __offset, int __whence ));
_READ_WRITE_RETURN_TYPE _EXFUN(_read, (int __fd, void *__buf, size_t __nbyte ));
void *  _EXFUN(_sbrk,  (size_t __incr));
int     _EXFUN(_unlink, (const char *__path ));
_READ_WRITE_RETURN_TYPE _EXFUN(_write, (int __fd, const void *__buf, size_t __nbyte ));
int     _EXFUN(_execve, (const char *__path, char * const __argv[], char * const __envp[] ));
#define    F_OK    0
#define    R_OK    4
#define    W_OK    2
#define    X_OK    1
# define    SEEK_SET    0
# define    SEEK_CUR    1
# define    SEEK_END    2
#include <sys/features.h>
#define STDIN_FILENO    0       /** standard input file descriptor */
#define STDOUT_FILENO   1       /** standard output file descriptor */
#define STDERR_FILENO   2       /** standard error file descriptor */
#include <bits/environments.h>
#include <bits/confname.h>
# define        MAXPATHLEN      1024
#ifdef __cplusplus
}
#endif
#endif /** _SYS_UNISTD_H */


  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 在C语言中,unistd.h是一个头文件,提供了Unix标准的系统函数接口。它包含了许多不同的函数原型和常量定义,用于处理文件操作、进程控制、系统调用以及其他一些系统级别的功能。 要下载unistd.h头文件,需要先找到一个可靠的C编程环境,例如GNU C Compiler (GCC)。GCC是一个广泛使用的开源编译器,可以在多个操作系统上运行。 要安装GCC,可以通过包管理器来获取,如在Ubuntu上可以使用apt-get命令进行安装。 安装GCC后,就可以在命令行中使用GCC命令来编译C语言程序,并包含unistd.h头文件。 在编写C程序时,只需要在源代码的顶部添加#include <unistd.h>语句即可。 然后使用GCC命令来编译程序,如gcc main.c -o executable。这将生成一个可执行文件,可以通过./executable命令来运行。 需要注意的是,unistd.h头文件是与Unix系统相关的,因此在使用非Unix系统的操作系统上的编译器可能无法找到并包含该头文件。在这种情况下,可能需要使用其他操作系统特定的头文件或使用替代的编程语言进行开发。 ### 回答2: 在Unix-like操作系统中,unistd文件是标准C库的一部分,提供了许多对系统调用的封装函数和常量的定义。我们可以通过下载对应的C语言编程环境来获取unistd.h头文件。 首先,在Unix-like操作系统上,我们需要安装一个C语言编程环境,比如GCC(GNU C编译器)。GCC是一个流行的开源编译器,可以在多种Unix-like操作系统上使用。我们可以通过操作系统的包管理器(例如,在Ubuntu上使用apt-get)来安装GCC。 接下来,我们可以在终端中使用命令`apt-get install gcc`来安装GCC。安装完成后,我们可以执行`gcc --version`命令来验证GCC已经成功安装。如果显示了GCC的版本信息,则表示已经安装成功。 此时,我们就可以通过以下步骤来获取unistd.h头文件: 1. 创建一个新的C语言源文件,比如`main.c`。 2. 在源文件中,使用`#include <unistd.h>`来包含unistd文件。 3. 编写一些代码来使用unistd文件中定义的函数和常量。例如,可以使用`fork()`函数来创建一个子进程。 4. 使用GCC编译源文件,并生成可执行文件。可以使用`gcc main.c -o main`命令来进行编译。 5. 执行生成的可执行文件。可以使用`./main`来运行编译生成的可执行文件。 这样,我们就可以通过以上步骤来获取并使用unistd文件。请注意,不同的操作系统可能有不同的安装步骤和命令。上述步骤适用于大多数Unix-like操作系统,但请根据具体情况进行相应的调整。 ### 回答3: unistdUnix标准的头文件之一,它包含了程序访问操作系统服务的函数和符号常量。我们可以通过以下步骤来下载unistd文件: 1. 打开终端或控制台,使用命令行工具。 2. 使用git clone命令从GitHub上下载unistd文件的存储库。例如,可以使用以下命令将存储库克隆到当前目录下的一个名为"unistd"的文件夹中: ``` git clone https://github.com/zavg/unistd.h.git unistd ``` 这将下载存储库并将其保存在本地。 3. 进入刚刚下载文件夹: ``` cd unistd ``` 4. 检查存储库中是否存在所需的头文件。使用命令"ls"来列出文件文件夹,查看是否存在一个名为"unistd.h"的文件: ``` ls ``` 如果文件存在,则意味着下载成功。 5. 将下载的头文件复制到系统的适当位置。通常,unistd文件应该放置在系统的标准头文件路径中,例如/usr/include目录。使用以下命令将文件复制到目标位置: ``` sudo cp unistd.h /usr/include ``` 此命令将在使用管理员权限的情况下将unistd.h文件复制到/usr/include目录中。 完成以上步骤后,就成功下载并安装了unistd文件。现在,可以在程序中包含unistd.h头文件,并使用其中定义的函数和符号常量进行编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值