파일 핸들에서 작동하는 함수에 대해서는 C로 단위 테스트를 작성해야합니다. 테스트 파일의 내용을 유닛 테스트 소스에 직접 포함시키고 싶습니다. 따라서 내 질문 : 가능한 문자열을 정의하고 C에서 파일 핸들로 액세스 할 수 있습니까?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 년부터 표준 POSIX 인터페이스입니다.'open_memstream'이 아닌'fmemopen'이 여러분이 원하는 것입니다. –
그건 꽤 달콤한, 그 들어 본 적이 없었어요! – falstro
테스트하려는 항목이 읽기 (쓰기 나 쓰기가 아니거나 fcntl 등)가 아니거나 글쓰기 만하는 경우 파이프를 사용하고 분기를 통해이를 실현할 수 있습니다. Windows에서이 작업을 해 본 적이 없지만 파이프와 포크가 모두 POSIX이므로 가능해야한다고 가정합니다.
먼저 파이프를 만든 다음 포크를 만들어 파이프에서 자식 (또는 부모)으로 텍스트를 쓰고 자식에서 테스트를 실행해야합니다. , 그리고 당신이 테스트중인 코드에 전달하는 파이프의 read-fd. 아이는 그것이 끝날 때까지 (글쓰기에 여러 번 전화를해야 할 때까지) 글을 쓰거나 파이프를 닫아야한다. 테스트중인 코드가 작성중인 경우, 파이프가 닫힐 때까지 (다른 코드를 한 번 이상 읽어야 할 수도 있음) 아이가 읽어야합니다. 그렇지 않으면 테스트 코드가 누군가가 읽거나 깨진 파이프에서 죽을 때까지 기다리는 것을 차단하게됩니다.
HTH.
- 1. C에서 CONCAT 문자열 ++ (STL)
- 2. C에서 문자열 연결
- 3. C에서 문자열 파싱
- 4. C에서 문자열 스택 만들기
- 5. C에서 문자열 비교 #
- 6. C에서 잘못된 문자열 찾기
- 7. C에서 변수의 문자열 만들기
- 8. 문자열 분할 연산자 C에서 #
- 9. C에서 유니 코드 문자열 #
- 10. C에서 문자열 manuplation
- 11. Objective-C에서 전역 적으로 액세스 할 수있는 문자열 정의
- 12. C에서 MATLAB 변수 (문자열) 얻기
- 13. Perl의 시스템 출력()을 파일 핸들로 재지 정하는 방법은 무엇입니까?
- 14. C에서 액티브 디렉터리에 액세스
- 15. div를 중첩되지 않은 핸들로 드래그
- 16. 대문자 C에서 문자열 배열의 문자열 검색
- 17. 액세스 데이터베이스 연결 문자열 오류
- 18. C에서 리디렉션 posix 파일 호출
- 19. C에서 C로 파일 전처리 이식
- 20. 분할 문자열 C에서 #은 (일종의)
- 21. C에서 문자열 상수를 어떻게 선언합니까?
- 22. C에서 문자열 변환 테이블 구현
- 23. C에서 문자열 조건을 동적으로 평가하기
- 24. c에서 부분 문자열 가져 오기
- 25. 객관적인 C에서 문자열 형식 비교
- 26. C에서 문자열 정규식을 일치시키는 방법 + +
- 27. 형식 지정자로 C에서 문자열 만들기
- 28. iphone의 Objective C에서 정적 문자열 변수
- 29. C에서 Excel 셀 값에 액세스
- 30. C에서 액세스 오버로드 된 연산자
Ryan의 답변 및 의견을 참조하십시오. POSIX에 대한 올바른 방법이며 C1x에서 표준화 될 수 있습니다. POSIX가 아닌 시스템을 지원해야한다면 꽤 운이 좋을 것입니다. –
POSIX는 괜찮습니다, 고마워요! – Leo