2017-09-14 67 views
7

Chciałbym komunikować się z mpv przy użyciu gniazd Uniksowych, ale Perl   6 nie oferuje żadnego interfejsu wysokiego poziomu. Pomyślałem więc, że mogę napisać mały moduł do tego, zacząłem kopać głębiej, znalazłem implementację IO::Socket::INET i dowiedziałem się o opcjach NQP nqp::socket i nqp::connect.Czy istnieje sposób radzenia sobie z gniazdami Uniksa w Perlu 6?

Jednak nie mogłem znaleźć żadnej wzmianki o tych w NQP operations list, i wydają się być całkiem różne od tradycyjnego API gniazda BSD. Dlatego chciałbym zapytać: czy ci dwaj są w stanie stworzyć gniazdo Uniksa i połączyć się z nim? Jeśli tak to jak? A może jest inny sposób?

Odpowiedz

2

Myślę, że najlepszym sposobem jest teraz użycie interfejsu NativeCall w celu wywołania funkcji poziomu C. Istnieje pewna stara dokumentacja projektowa, która sugeruje myślenie IO :: Socket :: UNIX. Ale nie weszła do współczesnych wersji specyfikacji języka (jeszcze).

+3

Dzięki, rozwiązałem go za pomocą 'IO :: Socket :: UNIX' z Perl 5 za pomocą' Inline :: Perl5', który działa jak urok. Chciałem tylko wiedzieć, czy istnieje rozwiązanie natywne. – Ramillies

+1

Zamierzałem dodać nowe gniazda i gniazda uniksowe, ale to będzie wymagało hakowania moar (co nie jest całkiem banalne). –

+0

@Ramillies fajne cieszymy się, że działa wystarczająco dobrze dla ciebie. NativeCall na C API byłby bardziej natywnym rozwiązaniem. Funkcje C wyglądają niemal identycznie jak API Perla 5, więc prawdopodobnie nie jest to zbyt trudne. –