>백엔드 개발 >C++ >Windows 환경에서 Unix의 unistd.h를 어떻게 바꿀 수 있습니까?

Windows 환경에서 Unix의 unistd.h를 어떻게 바꿀 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 14:46:10317검색

How Can I Replace Unix's unistd.h in a Windows Environment?

Unix Unistd.h의 Windows 대체 프로그램 찾기

Visual C를 사용하여 Windows 환경용 콘솔 프로그램을 개발하려면 다음을 사용해야 할 수 있습니다. Windows에 기본이 아닌 "unistd.h" 헤더에 정의된 함수입니다. 이러한 부재를 경험하는 사람들은 일반적으로 대체품을 찾습니다.

사용자 정의 "unistd.h" 만들기

한 가지 접근 방식은 다음을 포함하는 사용자 정의 "unistd.h"를 만드는 것입니다. 필요한 기능. 그러나 이 문제를 완화하기 위한 더 광범위한 솔루션이 존재할 수도 있습니다.

Unistd.h를 Windows로 포팅

이러한 요구에 부응하여 커뮤니티 중심의 이니셔티브가 제안되었습니다. "unistd.h"를 Windows로 포팅합니다. 제안된 출발점은 다음과 같습니다.

#ifndef _UNISTD_H
#define _UNISTD_H    1

/* This is intended as a drop-in replacement for unistd.h on Windows.
 * Please add functionality as needed. */

#include <stdlib.h>
#include <io.h>
#include <getopt.h> /* Found at https://gist.github.com/ashelly/7776712 */
#include <process.h> /* for getpid() and the exec..() family */
#include <direct.h> /* for _getcwd() and _chdir() */

#define srandom srand
#define random rand

/* Values for the second argument to access.
   These may be OR'd together.  */
#define R_OK    4       /* Test for read permission.  */
#define W_OK    2       /* Test for write permission.  */
//#define   X_OK    1       /* execute permission - unsupported in windows*/
#define F_OK    0       /* Test for existence.  */

#define access _access
#define dup2 _dup2
#define execve _execve
#define ftruncate _chsize
#define unlink _unlink
#define fileno _fileno
#define getcwd _getcwd
#define chdir _chdir
#define isatty _isatty
#define lseek _lseek

#ifdef _WIN64
#define ssize_t __int64
#else
#define ssize_t long
#endif

#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
/* should be in some equivalent to <sys/types.h> */
typedef __int8            int8_t;
typedef __int16           int16_t; 
typedef __int32           int32_t;
typedef __int64           int64_t;
typedef unsigned __int8   uint8_t;
typedef unsigned __int16  uint16_t;
typedef unsigned __int32  uint32_t;
typedef unsigned __int64  uint64_t;

#endif /* unistd.h  */

이는 커뮤니티가 Windows용 "unistd.h" 이식에 협력하여 개발 노력을 절약하고 보다 원활한 이식 경험을 보장할 수 있는 출발점을 제공합니다. Unix에서 Windows로.

위 내용은 Windows 환경에서 Unix의 unistd.h를 어떻게 바꿀 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.