私は別の自転車を作成したくなく、C ++のパイプ/ポペンの下で軽量(ブースト、ポコ、エース、または別のライブラリではない)クロスプラットフォーム(ウィン/リン)ラッパーを検索しました。助言がありますか?
1 に答える
多分何かのような
#ifndef _WIN32
inline int _pipe(int fildes[2], unsigned psize, int textmode) {
return pipe(fildes);
}
inline FILE* _popen(const char* command, const char* type) {
return popen(command, type);
}
inline void _pclose(FILE* file) {
pclose(file);
}
#endif
MSDN によると、CRT には_popen、_pclose、および_pipeが用意されています。したがって、下線付きの関数を Windows の外部にある実際の POSIX 関数に転送するだけです (逆にすることもできますが、_pipe は Windows で意味のある 2 つの追加の引数を取ることに注意してください)。
___________
/ \
| Warning ! |
\___________/
|
-------- __@ __@ | __@ __@ __~@
----- _`\<,_ _`\<,_ _`\<,_ _`\<,_ _`\<,_
---- (*)/ (*) (*)/ (*) (*)/ (*) (*)/ (*) (*)/ (*)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これらの関数は、コンソール プログラムでのみ使用する必要があります。Windows GUI プログラムでは動作しません。詳細については、_popen の MSDN ページのメモを参照してください。また、Win32 API の Posix popen() と同等のものは何ですか?も参照してください。.
popen はシェルでコマンドを実行することを知っていますか? UNIX シェルと Windows コマンド プロンプトの構文は大きく異なります。これらは pope/pclose のクロスプラットフォーム実装では対処できません。
Windows 関数と、これらの単純なラッパーで処理されない実際の POSIX 関数との間には、微妙な違いがあるかもしれません。
WinRT では使用できません。
(自転車はhttp://www.chris.com/ascii/index.php?art=transportation%2Fbicyclesからのコピーです。)