ファイルハンドルを扱う関数のために、Cで単体テストを書く必要があります。私はテストファイルの内容をユニットテストソースに直接入れたいと思います。したがって、私の質問:文字列を定義し、Cでファイルハンドルとしてアクセスすることは可能ですか? (ない求めているか、書き込み、またはのfcntlとかをやって)、またはのみ書き込み何あなただけ読んでテストしている、パイプを使用して、フォークでこれを実現するのは非常に可能である場合Cのファイルハンドルとしてのアクセス文字列
答えて
、fmemopen
とopen_memstream
を参照してください。
#define _GNU_SOURCE
#include <stdio.h>
FILE *fmemopen(void *buf, size_t size, const char *mode);
FILE *open_memstream(char ** ptr, size_t *sizeloc);
'#define _GNU_SOURCE'を' #define _POSIX_C_SOURCE 200809L'に置き換えてください。これらは、2008年 'fmemopen'、ない' open_memstream'以来、標準のPOSIXインターフェイスです、あなたが欲しいものです。 –
それはかなり甘い、聞いたことがない! – falstro
。私は窓でこれをやったことはありませんが、パイプとフォークの両方がPOSIXであるため可能であるはずです。
最初にパイプを作成してフォークし、子(または親)からパイプにテキストを書き込む必要があります。子でテストを実行すると、 、そしてあなたがテスト対象のコードに渡すパイプのread-fd。子プロセスは終了するまで書き込む必要があります(書き込むために複数の呼び出しが必要な場合があります)。またはパイプが閉じられています。テスト対象のコードが書いている場合は、パイプが閉じられるまで、子供はそうでない場合はテストコードが読み、または壊れたパイプに死ぬために誰かを待ってブロックするように、(複数回読み呼び出す必要があります)お読みください。
HTH。 Linux上で
- 1. C++分割文字列全体として別の文字列
- 2. リンクリストとしてのC文字列?
- 3. ゴー、Golang:文字値としてアクセス文字列
- 4. cの文字列と文字
- 5. の文字列としての文字
- 6. パラメータとしてC#パススルー文字列[] array
- 7. ファイルハンドルとしてのwinsockソケット
- 8. データ型文字列とC#の文字列との比較
- 9. C++の文字列とポインタ
- 10. C#の文字列とパス
- 11. ファイルハンドルの配列
- 12. cでの文字列と文字列の配列操作
- 13. 私のCアプリケーションでは、文字列を文字列リストと比較して
- 14. 文字列の '\'文字を文字列として使用
- 15. ナチュラルソートC - "数字と文字を含む文字列の配列"
- 16. スプリット文字列と文字列とC#での値を取得
- 17. C#大文字と小文字の文字列または文字列
- 18. C++引数としてCスタイルの文字列を渡す
- 19. Cプラクティステスト用文字と文字列
- 20. C#文字列をバイトに変換し、ouputを文字列として
- 21. C++の文字列と配列
- 22. javascriptのオブジェクトプロパティに文字列としてアクセスする方法
- 23. char ** vs char * c []文字列配列へのアクセス用
- 24. 文字列のC#
- 25. 文字列のC#
- 26. 文字列のC#
- 27. C#の文字列
- 28. 文字列C#の
- 29. Objective-C:定数の文字列と動的な文字列
- 30. Cの文字列と文字列を比較する
Ryanの回答と私のコメントを参照してください。これらはPOSIXの正しい方法であり、C1xで標準化されています。 POSIX以外のシステムをサポートしなければならない場合、あなたは大したことはありません。 –
POSIXはうまくいくでしょう、ありがとう! – Leo