2015-01-29 5 views
0

학교 프로젝트를 위해 C에서 malloc을 다시 코딩해야합니다. malloc 기능으로 서버에 GET 요청을 보내고 싶습니다. 내가 시도한 모든 솔루션은 malloc을 사용하기 때문에 LD_PRELOAD을 통해로드 할 때 심한 무한 루프가 발생합니다.malloc없이 C에서 요청 받기

내 질문은 정말 간단합니다 : *alloc 함수를 사용하지 않고 C를 사용하여 보내기 요청을하는 방법이 있습니까? 나는 서버가 무엇을 반환하는지 신경 쓰지 않고, 단지 데이터를 보내고 싶다.

+1

왜 'malloc'이 필요한가요? malloc이 악의적 인 경우에 충분히 큰 정적 배열을 사용할 수 있습니다. – i486

+0

'malloc' 함수 나 HTTP 라이브러리를 구현하고 있습니까? 둘 다 정규직이지만 서로 독립적으로 처리해야합니다. 관련이없는 것들을 섞어서는 안된다. 또한 왜 malloc 구현이 HTTP 요청을해야하는지에 대해 상상할 수 없습니다. 프로그램을 실행하는 경우에도 실행 속도가 얼마나 느린지 생각해보십시오. – 5gon12eder

+0

이미 malloc을 구현했지만 웹 응용 프로그램에 메모리 맵을 표시하고 주소와 할당 된 크기를 보내려고합니다. –

답변

2

몇 초가 걸릴 수도 있고 실패 할 수도 있으며 malloc과 같은 다른 많은 라이브러리 함수를 호출하는 HTTP 트랜잭션을 수행하는 것은 결코 작동하지 않습니다. 문서화 된 malloc을 원한다면 더 나은 방법은 데이터를 대기열에 기록하도록 malloc 내부에 코드 조각을 포함하는 것입니다. 그런 다음 주기적으로 응용 프로그램의 별도 스레드 또는 다른 슬랙 시간에 대기열에서 데이터를 제거하고 게시하십시오.

좋은 방법은 리눅스가 열린 파이프에 데이터를 쓰고, 파이프의 다른 쪽 끝에있는 프로그램이 게시를하는 것입니다.

+0

+1을 사용하여 모든 * alloc 함수를 오버로드합니다. 세계가 진정으로 그를 반대한다면, 파이프에 쓰면 어떻게 든 malloc이 호출됩니다 ;-) – user3386109

+0

그건 문제 야;) 무한 루프를하지 않기 위해 공유 메모리 세그먼트를 사용하더라도 은 malloc을 사용한다. –

+0

@AbelChalier : 모든 단일 malloc 요청을 (일부) 전선으로 보내라 고 주장하는 경우에만 문제가 발생합니다. 일괄 처리 한도에 도달하거나 짧은 시간이 경과하면 보내십시오. 그런 다음 전송 코드가 malloc을 호출하면 다음 전송으로 일괄 처리됩니다. – rici