2017-01-20 3 views
0

'msgsnd는'기능 실제로 선언메시지 큐 기능 msgsnd는이

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); 

이하 그러나 이것은 단지 3을 가지고 다음과 같이하여

msgsnd($qid, pack("l! l! a*", $type, $type, $cmd), 1) 

에 사용하는 Perl 프로그램 존재 인수. 어떻게 작동합니까?

+1

다른 언어로 된 라이브러리에 대해 Perl 바인딩 또는 구현을 작성하는 경우 종종 인터페이스가 변경됩니다. Perl의 구현이 객체 지향적이면 객체를 전달할 필요가 없거나 뒤에서 전달 될 수있는 경우가 많습니다. 그러나이 질문은 문제의 기본 설명조차도 제공하지 않습니다. 너무 광범위하고 코드 문제가 아니라 소프트웨어 라이브러리의 작동에 초점을 맞 춥니 다. – zdim

+4

[This] (https://perl5.git.perl.org/perl.git/blob/HEAD:/doio.c#l2350)는 작동 방식입니다. – reinierpost

+0

'int msgsnd (int msqid, const void * msgp, size_t msgsz, int msgflg);'펄처럼 보이지 않습니다 ... – ikegami

답변

1

usage는 실제로

msgsnd ID,MSG,FLAGS 

펄 문자열은 C처럼 NUL 말단 아니다; 문자열 스칼라 (예 : MSG)에는 문자열 버퍼 자체 이외에 문자열 버퍼의 데이터 길이가있는 필드가 있으므로이 세 매개 변수에서 필요한 모든 정보를 사용하여 기본 msgsnd() 호출을 만듭니다.

Here은 Perl의 msgsnd 연산자의 구현입니다.