ホームページ > バックエンド開発 > C++ > Windows 環境で Unix の unistd.h を置き換えるにはどうすればよいですか?

Windows 環境で Unix の unistd.h を置き換えるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-08 14:46:10
オリジナル
317 人が閲覧しました

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

Unix Unistd.h の Windows 代替品の検索

Visual C を使用して Windows 環境用のコンソール プログラムを開発するには、次の使用が必要になる場合があります。 「unistd.h」ヘッダーで定義されている関数。これは Windows にネイティブではありません。この不在に遭遇した人は、通常、代替品を求めます。

カスタム "unistd.h" の作成

1 つの方法は、以下を含むカスタム "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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート