-1
나는 3200 그래서 같은 수레를 쓰고 읽을 호출C 소켓 배수
모든 데이터는 1 개 쓰기로 작성하지만이 개 읽기 소요float *fft = new float[3200];
int inRead = 0;
while (inRead < (3200*4)) {
//sleep(1);
int bytesRead = read(sd, fft + inRead, (3200*4) - inRead);
inRead += bytesRead;
}
모든 데이터를 얻기위한 호출. 첫 번째 읽기는 11584를 반환하고 두 번째 읽기는 1216을 반환합니다.
문제는 두 번째 읽기 호출이 단지 0을 읽는 것입니다. 그러나 절전 호출의 주석을 제거하면 올바른 데이터를 모두 읽습니다.
수면없이 데이터를 가져 오는 더 좋은 방법이 있습니까?
이어야하며, 다른 형식의 프로세스 통신을 사용할 수 있습니까? 파이프는 그들이 차단하기 때문에 찾고있는 것일 수 있습니다. –
소켓이 어떻게 설정되었는지 알려줄 필요가 있습니다. 즉, [mcve]를 제공하십시오. 그러나 처음에는'read'의 반환 값을 검사해야합니다. 'read'는 에러시'-1'을 반환 할 수 있습니다.이 경우'inRead'에 추가해서는 안됩니다. 올바르게 구현 되었다면 여러 개의'read' 호출에 문제가 없어야합니다. 따라서 우리는 완전한 코드를 볼 필요가 있습니다. – kaylum
예, 저는 이미 그 프로젝트에 깊이 들어가 있습니다. 다시 그런 요소가 있습니다. – nicolas