2012-09-15 2 views

답변

4

나는 "대화식으로"라고 말하면 irb을 의미합니다.

Ruby와 같은 고급 언어는 다양한 두께의 대부분의 커널 syscall에 대한 래퍼를 제공합니다.

때때로 이러한 래퍼는 sysread()syswrite()처럼 매우 얇습니다. 이들은 각각 read(2)write(2)과 다소 동일합니다.

다른 시스템 호출은 socket I/O stuff과 같이 두꺼운 레이어 뒤에 숨겨집니다. UNIXSocket.recv()으로 전화를 걸면 "시스템 콜을 정확하게"호출하는 것인지 알 수 없습니다. 어느 정도는 그게 정확히 어떻게되는지 알지만, 루비와 C 코드가 당신과 실제 시스템 콜 사이에 얼마나 많은지 알 수 있습니다.

그런 다음 표준 Ruby API에 전혀없는 시스템 호출이 있습니다. 이는 대부분 mmap(2)과 같이 큰 의미를 가지지 않기 때문일 수 있습니다. 이 시스템 호출은 메모리에 대한 원시 포인터에 관한 것이므로 처음에는 Ruby와 같은 언어를 사용하지 않도록 선택했습니다. 어떤 경우에는 a third party Ruby mmap module이 발생하지만 실제로 C에서 탭할 수있는 모든 기능을 제공하지는 않습니다.

syscall() 위의 설명에서 지적한 매트는 비슷한 이야기입니다. 이론 상으로는 커널에서 시스템 호출. 그러나 포인터를 다룰 수있는 능력이 없으면 구조물 등의 메모리에 정확하게 데이터를 배치하십시오. 유용한 전화를 걸 수있는 능력은 상당히 제한 될 것입니다.

시스템 호출로 재생하려면 C를 배우십시오. 바로 가기가 없습니다.

관련 문제