Libslack

Een Unix / C-bibliotheek met algemene hulpprogramma's voor programmeurs met speling
Download nu

Libslack Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • GPL
  • Prijs:
  • FREE
  • Naam uitgever:
  • Libslack Team
  • Uitgever website:
  • http://libslack.org/
  • Besturingssystemen:
  • Mac OS X 10.3.2 or later
  • Bestandsgrootte:
  • 325 KB

Libslack Tags


Libslack Beschrijving

Een Unix / C-bibliotheek met algemene hulpprogramma's voor programmeurs met speling Libslack is een gratis en open source-bibliotheek van algemene hulpprogramma's die Unix / C een beetje gemakkelijker in het oog programmeren. Hier zijn enkele belangrijke kenmerken van "libslack": Programmacader: · Het "framework" -onderdelen van Libslack zijn verplicht om het meest aanstootgevend te zijn. Niemand houdt van frameworks. Maak je geen zorgen, er is niet veel voor. Als je het niet leuk vindt, doe dan alsof het er niet is. · Libslack biedt de mogelijkheid om programma's om zichzelf te identificeren, de opdrachtregeloptie-verwerking uit te voeren in een enkele regel van code en produceert "Standaard" GNU-stijl --HELP, --Versie- en gebruiksberichten. Debug en uitgebreide messaging wordt ook verstrekt en wordt ingeschakeld door het gebruik van "Standaard" - Debug-en -verbose-opdrachtregelopties. · Berichten (inclusief fout, debug en uitgebreide berichten) zijn voorzien van schone gesprekssyntaxis en flexibele semantiek. Berichten kunnen worden gericht op logbestanden, bestandsdescriptoren, syslog of gemultiplext naar een van de bovenstaande (en op nergens anders (b.v. dialoogvensters) als u uw eigen berichthandelaars implementeert) zonder de call-syntaxis te compliceren. · ISO C legt extreme beperkingen op aan signaalhandlers. Posix legt minder extreme, maar nog steeds vervelende beperkingen. Libslack bevat functies die een niveau van abstractie vormen tussen de signaalhandlers die u schrijft en de reële (ISO C-compatibele) signaalhandlers. Hiermee kunt u onbeperkte signaalhandlers schrijven. · Grof korrelige persistentie van eenvoudige configuratie-informatie wordt verstrekt door het gebruik van Java-stijl-eigenschappenbestanden in "bekende" locaties. Daemon Services: · Libslack biedt functies die Daemons triviaal maken. Het bevat functies om een daemon te worden en om optioneel een vergrendeld PID-bestand te maken om ervoor te zorgen dat slechts één voorbeeld van een genoemde daemon ooit tegelijkertijd actief is. De daemon-functie gedraagt zich op de juiste manier als het klantproces wordt gestart door init (8) of inetd (8). Er zijn ook functies om het parseren van eenvoudige configuratiebestanden te stroomlijnen (zoals die gewoonlijk gevonden in de directory / etc-directory). Er zijn ook functies die u helpen meer veilige daemons te schrijven (d.w.z. revuide / setgid-privileges, het genereren van kernbestand voorkomen, gebruiker en groep wijzigen, de veiligheid van een bepaald bestandspad testen). Er zijn ook functies om te controleren of een naam Daemon wordt uitgevoerd en om het te stoppen. Netwerkdiensten: · Libslack biedt functies om de implementatie van netwerkservers en clients (TCP, UDP, Unicast en Multicast) en de (tekst of binaire) appliceprotocollen die ze gebruiken te vereenvoudigen. Netwerkservers en klanten kunnen in een enkele regel van code worden ingesteld. Er is transparante ondersteuning voor IPv4-, IPv6- en UNIX-domeincontactieve adressen. Er is ondersteuning voor betrouwbaarheid via UDP. Tekstprotocollen worden geïmplementeerd door reeksen van verwachten en verzenden functies. Binaire protocolpakketten kunnen worden verpakt en uitgepakt (met behulp van functies die vergelijkbaar zijn met PACK () en Pak () in PERL, maar netwerk / opslagvriendelijk). Er is ook een functie om e-mail te verzenden. Agentgerichte programmering: · Libslack biedt een generiek agentgericht programmeermodel in de vorm van het type agentgegevens. Net als objecten kunnen agenten reageren op externe stimuli. In tegenstelling tot objecten, kunnen agenten ook onafhankelijke acties ondernemen. Dit wordt uitgevoerd door Multiplexing I / O-evenementen op willekeurige bestandsdescriptoren met behulp van peiling () of selecteer () en ook multiplextimers voor het plannen van acties. Het verbinden en ontkoppelen van bestandsdescriptoren gebeurt in constante tijd. Het plannen en annuleren van acties gebeurt in constante tijd. TIMER-onderhoud wordt uitgevoerd in constante gemiddelde tijd. Dit betekent dat agenten schaalbaar zijn ten opzichte van het aantal uitstekende timers en duizenden geplande acties kunnen ondersteunen. Een enkel middel kan worden gebruikt als een eenvoudige gebeurtenislus, of meerdere middelen kunnen op elkaar worden aangesloten in willekeurige netwerken op meerdere draden, processen en / of hosts. Een enkele agent is niet schaalbaar met betrekking tot het aantal aangesloten bestandsdescriptoren, maar meerdere middelen kunnen worden gecombineerd om veel hogere schaalbaarheid te bereiken. Ze zijn handig voor netwerktoepassingen, gedistribueerde systemen en simulaties. Gegevenstypen: · Libslack biedt een generieke groeibare pointer array gegevenstype genaamd lijst, een generiek groezelbaar hash-tabelgegevenstype genaamd Kaart en een fatsoenlijk string-gegevenstype dat wordt geleverd met enorme functies (velen opgeheven uit Perl). Er zijn ook abstracte afzonderlijke en dubbel gekoppelde lijstatysypes met optionele, "Groeible" freelisten. Ontkoppelde draadveiligheid: · LIBSLACK biedt het locker-gegevenstype dat Discoussynchronisatiestrategieën uit de clientcode beschermen. Hierdoor kan de code worden geschreven die de keuze van de synchronisatiestrategie voor de klant afleveren. Hierdoor kunnen runtime-selectie van vergrendelingsstrategieën, wat betekent dat het zelfs mogelijk is om de eindgebruiker te laten specificeren welke vergrendelingsstrategie wordt gebruikt. Het ondersteunt wederzijdse uitsluitingen, lezers / schrijversloten en geen vergrendeling. Er zijn ook debug-versies die berichten afdrukken naar de standaarduitvoer om klanten te helpen deadlocks te lokaliseren. Zie http://raf.org/papers/mt-disciplined.html. Coprocesses en Pseudo-terminals: · Libslack biedt functies voor het maken van pseudo-aansluitingen die draaglijk zijn en voor het maken van coprocesses die buizen of een pseudo-terminal gebruiken voor communicatie met het klantproces. Diversen: · Libslack bevat gemaks- / shorthandfuncties voor willekeurige dingen zoals het lezen van een lijn van tekst met een lijn-einde (Unix, DOS of Macintosh), FIFO- en bestandsregeling, POSIX.1 limieten, parseren Syslog Facility / Priority Pairs, dynamische toewijzing van Multi-dimensionale arrays, geheugenpools, beveiligde geheugen, beveiligde geheugenpools, er is ook een hoop sorteerfunctie. En er zijn ook implementaties van GNU GetOpt_Long (), Strlcat (), Strlcpy (), SNPRINTF (), VSNPRINTF (), VSSCANF (), ASPRINF () en VASPRINTF () voor systemen die ze niet hebben. API op lage niveau: · Hoewel er veel functionaliteit in Libslack is, is de API zelf zo laag mogelijk. Er zijn geen GRATUITEZELIJKE data-structuren die perfect aanvragen in perfecte acceptabele gegevensstructuren die door het systeem worden verstrekt. De netwerkfuncties retourneren bijvoorbeeld geen opgezette socketobject. Ze retourneren bestandsdescriptoren net zoals onderliggende systeemgesprekken. De COPROCESS-API is vergelijkbaar in Geest tot POPEN (3) en PCLOSE (3). De FUNCTION FUNCTIE FETINE (3) interopereert perfect met standaard I / O. Fouten worden geretourneerd via Errno, net als systeemgesprekken en enkele standaard bibliotheekfuncties. Misschien vind je niet leuk dat errno-programma's schrijft, maar ik dacht dat totdat errno weggaat, het beste is om het te accepteren en een manier te vinden om erbij te profiteren. Onvermijdelijk, de snaarmodule wikkelt een object rond perfect goede charaanwijzers, maar de onderliggende char-aanwijzer is altijd toegankelijk en veel van de tekenreeksfuncties hebben versies die werken aan gewone C-snaren. · Het doel van dit ontwerp is luiheid. Het betekent dat ik niet elke netto-gerelateerde systeemoproep of standaard string-functie in een extra functie hoef te wikkelen en u hoeft geen lading nieuwe identificatienetjes te leren voor functionaliteit die u al weet hoe u toegang hebt. Hetzelfde geldt voor foutcodes. Ik wil ze niet opnieuw uitvinden en je hoeft ze niet opnieuw te leren. Het betekent ook dat Libslack-functies gemakkelijker kunnen worden opgenomen in bestaande programma's om hun functionaliteit te verbeteren zonder enorme code herschroeft en zonder de noodzaak van een steile leercurve. Nauwkeurige documentatie: · Elke module heeft een manpage die elke functie in detail verklaart. De functiesignaturen in de mandpagina's worden systematisch gecontroleerd tegen de broncode om ervoor te zorgen dat ze nooit uit de synchronisatie komen. · Er zijn tal van voorbeelden in de mandpagina's. De meesten van hen worden systematisch gecompileerd en uitgevoerd om ervoor te zorgen dat ze nooit uit de synchronisatie komen met de broncode. · De feitelijke tekst van de mandpagina's kan niet systematisch worden gecontroleerd, maar het krijgt geen proeflezing. Laat het me weten als u fouten van welke aard dan ook in de documentatie vindt. · Alle documentatie neemt de vorm aan van mangages omdat manpages sneller en toegankelijker zijn dan iets anders. Grondig testen: · Libslack wordt grondig getest. Dit betekent niet dat er geen beestjes zijn, maar het betekent wel dat er een grote lijst is van bugs die het niet heeft. Exclusief de SNPRINTF-module zijn er bijna 2.800 tests. Inclusief de SNPRINTF-module zijn er bijna 150.000 tests. Deze tests dienen ook als extra voorbeelden.


Libslack Gerelateerde software

John

Python Library voor het serialiseren van elke willekeurige objectgrafiek in JSON ...

174 14 KB

Downloaden