Você está na página 1de 281
KURT WALL Programacion en Linux CON EJEMPLOS __/ i aig Be wea BE tere del Tena li te ae | 987. 945008% [1 Pramas ‘editors: Maris Fereanda Custila Amado de nterory taps: Pérez Villani & Ascisdor {radureon. Jorge Gora Procion: Marels Nangaoti ‘Teaducido te Linx Programing by eanpie, by Kurs Wal, publish by QUE, Coppsight © 2000, AU Rights Reserved Publishes by arrapoeen with the original plier, PRENTICE HALL, ine, A Pearion Bduention Canon. ISBN D.7897-0216.1 Bascién en Zapinal publintn por Pinson Béweatin, 8. Conyrgit © 2000 ISBN 987-940-0034 Este libeo no puste ner repduci total a paraimente en eisgunn for ‘a, a. per angus redioo procediziento, sex reproyratcs, flaca, ma froflanaer, mimeogritic seusuie or aiken mecdnien, Otequimles lexicon, informatica, magneto, electodpic,sastera, Canlquir re fredaccisn sin el perlae pmo yor asenin ge Ia edtoral viel dereehos ‘eorrvadrs,ea legal yconstcuje un del (© 2000, PEARSON EDUCATION 5.4. ‘ Rogimieate de Patmciss 1050 (1980) Bucees Alves Fopilica Argentine Guta herbs el dps aoe dspone aay 11798 Inpeeso en Pend. Prated in Pent, {press en Quebecor Pru, one mas de movie 2100 Primera edisida:Diderbne de 2000 Development Exiter Seen Obon ‘Managing Estar Use Vigan Proyect Eaitor Tonya Simpsons ‘copy Eattor Keza Endsle Indexer (Chery Landes Proofreader Benign Borg ‘eodnieat Editor Cameron Lats ‘Tuam Cooreinater Clney Testers Interior Design aren Ruages ‘cover Design Duane Rader Associate Publisher DeaniMiler Execute Editor sath acs Acquisons Eetor Gretchen Ganser | | Cony wer | ne Berger | Procucten | Oanterrs Heather Noseman wm El contenido de un vistazo oe 1 ParteI Elentorno de programacion de Linux 8 1 Oompilecton de pIogTAMES mn a 2 Control del proceso decompilacén:elimake de GNU... 88 3 Acora dl proyocts : 36 Parte Programacion de sistemas oo... 50 4 Process secerinemnnnaensuenne (BL 5 Sefilee con con 8 8 Liamadas a SisteM& osc ceca aE 7 Adginisracin bisicade archives ea Linux ast § Administracén avanzida do arhivonen Lint nas 157 # Dierons aut Parte IM Las APIs (Interfaces de programaciin Aoaplieaciones de Linux omnes 208 LOLAAPL debase de X08 onseeninennnmnnenne 208 4 Manipulaciéa de pantalla con M1988 vnc, 219 12 Programacidn avaniada con neurnes 249 IS LAAPL de sonido: O8S/F ive. neem itt 14 Croacioa yutlizacién do bibliotacas de pragramacidn .. 299 Parte IV Comunicacién entro procasos i a 1B Pipes y FIFOs a sat 16 Memari eompartd.... scenes $4 17 Semaforoaycolas de mensajes. 355 18 Prograsincita de TCPIP y sackets sone OF Parte V__Utiidades de programacion en Linux 407 19 Seguimientos de cambios et el eédigefusnia:el RCS o Sisters de Control de Revsionas 409 20 Un wolkitde deparaciin - $28 21 Distnbucion de sttwere.. =i 448 22 Proyecto de progearsaién: una base de datos ds CD de ensicn tee Pate VI Apéndices = 497 4 Resursos adicioaales . . scare AR 3B Herramientas adiconales de progremaciin 08 au Indice temo a ih Parte t Tabla de contenidos Progamacn en Lina con ejemplos ones ‘Aceres de este libro ‘Para guidn ast pensady @3b0 UDEy on enes Frogrinacin en eterno ins cn Glos pleas cue se incnistaré eno archivo binario reculantey, come la mayoria de ‘os compiladores, gcc puede evar a cabo también optimiancdn de edge El goc incluve mise treinta advertoncias individuales y ree aiveles de ad- vvertercia tio “captuca todo" El gec x tambidn an complleder cr-oradlo, de tmodo que se pueda dosarrllar el eSdigo-an une srquitectara de procesados ¥ correri ea utrs, Lacompilaciin eruzada es importante porque Levon cor 0 muchos tines dfprentes de sistema, ‘alae ema ol xSee de fate, Ins PowerPC, las Amig ylas SCN Spares. Cada chip do procesacor tiene una arquitsctura Fisica dferenta, de mea que la manora en ee se debe cous. triir en binario varia para cada sistema, Cuan so utiliza como un compi- lator cruzado, ol gee permite quo ae compile un prograsna divetado pare o> ‘rer pana PowerPC en, digamog, un sistema lintel x86, Finalmente, el geo acepta an lista larga de extensiones a C, La mayorta de stay extensions roajora el desempet, conteibaye ala taren del comapilsdor fondientea la aptimizsciin del eidigo, ohaco mats sencile i trabajo del pro. sgramador. Ei precio a pagar a cambio es la disminvacion de la porsailidad, Muncionazemos algunas de las extensiones mts comunes, port las tse maa se pueden encoateur on ls arthiros de eneabezamiento del kernel, pezo 4o ideal es que el lector uvice su us on les programas que react Invocacién de goo Para utdizar gcc suministro un aombre do archivo fuente de C ywtilice la op- ‘ida 2 para espectionr el nombre del archivo de salida, goc proprocessr, com- pilara, asamblard y vinculard ink)el programa, generando un archivo sige. lable, a menudo denominado binario, La sintaxs aus simple se ilustra aga 66 arohiva,encragas |e archive anti archivo _sntrada.c os un archivo de eédigo fuante ea Cy -oesiableee que et sombre det archive de salida seed archivo_sal. ids. Loscorehetes || ) iadican ‘10 largo de este libro azgumentos opetonals, Si el nombre del archive da sali: Ga nose especie, gec lo denominard a. out exmo opcién predeterminada, Ejempio Este ejemplo utiliza got pam erear el programa hela a partir del cédigo fuente hola .c. Primero, el eddigo fuente 1 Yomare el pragren on Tecemats mala. */ Capitus 1: Compitsoién do programas a tai‘ibela, suds de oroarmcores dunt") sume para compiler correr este programa, tipee Si todo anduvo bieo, ges celica au trabajo en silencio 7 luego rogresa ala sedal de poticidn de comancos del sistema operativo. goc compila y linkea ol archivo fuente tol. c, creanco el archiva binaria que fxs especificado me- diante el argamento -6, 0 sea hola Excomando 15 (que vendria a ser algo ast como la contraparte UNIK del co tmando DIR ée DOS) muestra que existe un nuevo programa, hola, Hult. mo cemando ajeeuta el programa, y produce Ia siguiente salida id 'Sreitn cartons tune un sodas ‘a on haa a ua wa aeracia SPATH F/Ben:jugef Local bin’. (one uo a! A), a soon i ansi ae seal 34, x co ae igi haa {Ciro sabe ge como procesar ls archivos? Se basa en las extensiones de los mismos para determinar cma procesar correctamente vala archive. Las extensiones mds comunes y sus iaterpretaciones se listan en fa table 1.1, Tabla 1-1. como interoreta goo las extensions we archvo Tipo do archivo Cc Ranta de nda c, wee oaiga tues 2 nga C+ ‘ alge tuena a8 © presecaate eintina 40 Programasién on Linwe Tabla 2.2. continuscin ‘Extonsion Tigo de archivo rv Cpuign fate de Cy> PepoTesae 8) ‘cigs fuerte de enguajeensambiacer 0 eles oxi comp er beige oe bbltexacomplace Invoeseién de goo paso a paso En el primer ejemplo, hubo machas cnsus que tuvieron Lugar do manera en feubierta jel luctor no las vi, gee primero curr hole. c pur el prepeveess- ‘dor, 209, pera expaadie cualquier macro que pudiese haber eisaertas los ‘contenido de ls archivos inehios madiante #ine luce. Lueyo compile el [digo fente preprvcesado, cnvirtiéndolo ex eiligo objeto. Finalmente el linker, Lo, ere6 el archive binario ho La. Et proveso exmpleto de winculacton se llustra oa la figura ese Figura 14. La eompilocién de un programa consists de varias eigpas, ino puede rerear ostas etapas manaalmente, avanzando por el prooeso de crmpilasion un paso por ver. Para indicarie a Gee que tenga la cymplla- Hin mim al oranmoanade, utilce la opeS5aB de CC. como se indies a continual Canituio 1 Compliacion de programas 1. El paso siguiente omsista on compilar el echivo preprocesado para conver- tirlo en codigo objeto, utlizando la opcién -¢ de gcc. La opxiéa «xe utiliza part indicarie a 360 que comience la cemmpilcin a partir de certa etapa La Sintuxss correcta pars esta etapa e8: Linteondo el archivo objeto, fnslmente, se sbtiene su imagen bina. Bl eo ‘mands que levaris a cabo a etapa de vinculacion seri algo asi comic ta si- uiente: F gee wetiee Ejomple ‘Wolviend al programa hola del wemplo antaris, avancs paso a paso a trae ‘vs del proceso de eompilacign tal como lo insta ol ajemple siguiente Primero, preprocese N gee Eee 6 lass ‘Sil eetor examina Rola. cpp con wn aditr de texto, vera que ol sostwaido Gel archivo de encsbezomiento 5410.n ha sido efectivamente inseriado on fl cédigo fuente junta a ots simbolos de greprocesado, Bl listado siguiente fe un extracto de hola..cp0: rt tgetot (FILE * stem osi8 ts #58“) age seate.n 3 wen ine teat (FRE f+ sre) 9p para convertirio on coaigo ebjero: El paso sigtiente es compiler hola 2 Programacién en Linux 38 ‘Sedebe utiliza I opsién -x para inicarie a o¢e que comience la compilaciéa ‘cerca altura, onesie aso, 2 partir del iden fuente preprocesade, Cuando se oferta al nen del cicigo ahito, nalmen‘s, secras un archive binsri: Espero que coesto al lector pueda advertic que es macho mis sencile wtil= sarla sntaxis “‘abroviads’, goo Nola.c -o hele. £l siemplo paso a paso emostr que uno puede detenor y comencer Ja tompilactén en cualqaier stapa, si surgiose la necesidad, ‘Vng situacién en la cual une puode realizar Te compllacién pase a paso es ‘uando se esté creanto biblistecas. Bn este e230, uno soi desea crear archic +09 objeto, de endo que la etapa final de liukeo resulta innecesaria. Ota cit- ‘unstancia de realizar el proceso de compllacisn paso a paso os cuando un trchivo incluido mediante FineLude produce conflictos con e esd que el lactor a redactado, o tal vos can oto archive insertado soa #2nclude. Ro- ‘sorcee el proceso pase a paso permalliré ver cou mayor claridad esl e3 ef ar- ‘uve qus genera el conic, Utiizacién de miitiptes archives de cédigo fuente ‘La aayerta de ls programas do C emnsiste do miltiples archivos de codigo fuoate, de modo que ean archivo fuente debe ser exmpilaco a cidligo objeto tuntas de! paso tinal do linkee. Este requerimiento ee satistace eon facilided. ‘Solo se reqatere provoer a gcc del nombre de ende archivo de cédigo fuente ‘que se cebs compilar gce so hace cargo del resto del preeeso, La iavocaciin, foe gee sera similar «Ia siguiente $ ac aretivat.c aretieg.¢ arenired.¢ 0 nore sregrans (Qcc primero crea archivol.o, archivo2.o y archivod.o antas de in- earls entco si para crear nombra_prograita, Ejemplo ‘Supongsmes que se deseu compilar nueve-hoLa, que utiisa 26eigo prove. siente de dos médulos, nostrar,c y mansajes.c, yun archivo de eneabe. ‘ad, m9. Minted programa on inueeat: shots 1 piwe sola, ‘novtrene _ cantealaesr ae panes ct teso.b> saintaie) shar seesaje stenvaniaall « ( ‘har marsaie aespeacat | 022, srearanasa ‘acts, aesarinator CevivJot: Complizcton ae programas a3. ‘rine seas lnetsale cents; unsaje.h ‘ mnaatesn « Emcatecado de mastbe:c praeee/Netet, taesials El comands para compilar estos programas, y per lo tasto para erear nue- vo_noda, es 4 ee nereala s anateas ¢ 2 muna gota Alcomrer este programs, su sada sert la siguicate: 4 les ala iaies, programe gc eveors las mitmas stapas do proprosesado-sowpilacite lines que aa- 5, eata ver creando archives sbjeto para cada archiva fusnte antes de prow Programaclon on Linux condor a crear cl archivo Final binarie, rueve_hola. Tipeas comandos largo. como éste puede volverse iedioso, sia embargc. Bn l capttale 2, “Control del jprozeso de compalacien: el make de GNU", s2 vers ooo resolver este proble ‘na La proxima secoiin prosantart las muchas opciones de lines de coman- Goede gee Opciones y argumentos {in lista de opeiones de Linea de comand que acepta gee ocuparie varies pie ginas. de modo que a tabla 1.2 presenta sélo as mAs comunes. Tntia 1.2. Opciones de nea de comarca aw go Opeiba ___Propaito 0 now_arshivi Dealna e archvo de aalda naA_ archiva fo nacenarian. te euro sa compl Odio ono). Sin ve especie) nombre de aste archivo, a opabrprodeta™nada os 8, Ut, e Complain nko, Dfooebar Date un mecro de preprocsader foo con un valor bare Ia yas de comin trutadir Sta i rua de accem> of droctovoespoctionco on cuta_a8r 8 camino dea Ista de grectonoy ar qe gee Dusen Ios a Enos 3 leit porta presets do avecinos #ineLuze. Lrutasair ‘St i rea da acceso directo eapecrionco an cuta_dir 83 camigno dea Ista ce afoctonos ev qua gee busca wee “os do ones: Como open proastonmnose, gee nkoa bt biotees compere, stati Lniaa sitowons atitiae tee Lan a tibtorce Feo, 3 Irae anal archivo nto inaroeln conga epuraton sb Iroiye anal achive tint muebieinalnforaein de depure- “ ens se ponds iterate depursds del GN, ga, ° (ptinias et aalgo somolada, Esto ee equvaere a espcsiear 3 08 Especites un niva oniinasién can ead, cae Colosaal complica on meas ARSUISO C. na serine 8x ‘ensones GNU cue gener cenflets con dices estincares. -pedancic unstated Ins adverensas ne quiere ANSL/ISO C 2s tinaar -padantic-ercors. Nuestra tdes ns srares ove requlere o ANSI(SO Cesiar- oar ‘cragitional _Hebllts el acoy praia sits del de Kercighan y tse (she lector no onrprence io que sigifoa ato, rose preocupe for ale ata con saber que Rerignary sha fren sor ‘ Fpnicoe del c otra ” Sue bots ins Mensajes ce averencs. onal shine ocala adver wroas genaraimertesoleanies aie Guede perce gee maa er aaverices epee, Sic Yannis Ccenitio t:Compllacion de programas 45, En lugar de generar acertencias, gee comrtralas acvaten- fas er evctes, caterenaa ia coral sw Erte una lb 6 dopansetciacomaatbe con nak. Ut p> acess mauersleanun payee somniea. ~ ueste 9s coranacs vlaoos en cae #988 Ge comaacen, Elector ra ha visto cfm operan -c y -0.Sino se eppecifica -0, sin exabar- i, para um archivo de eatrada denominaée non_archiva .ext (donde ext Fepresenta cualquier extensién de hasta tres caracteres), la accidn predeter- ‘minada do gee serd denomninar al archivoejecutable a. Out, al archivo obje- ‘yonom_arcnivo.o, yal archivo en lenguyje ensamblados fom_arch:v0.s. Ex salida del prepeocesador va al cispositivo que se ensuentra Satablosido ‘come SCOUT iispositive estandar de sala). ARCHIVOS DE BIBLIOTECA ¥ DE INCLUSION ‘Sis dispooa do archivos de bibliotaca ods inclasién situados on wbicecionse ne erténdan las opciones -Lruta air y -ruta_din pormiten eapectiear ‘dichne ubieeiones ¢ azogurar que 49 beacaan Ina respectives archivos ‘senu ubieaciones unter do bncorlo on las ortsndar (les enignadaa por l eom= pilador coms predaterminadas). Per jompio, ize almacenan low archives de {nelusiin habitualos en /usuario/ Loeal/ais inelussones, para que eee los encuentre I insoctedin a gee daberia so algo paride a: ‘Soe: beftlee -tiumarojlecliats ielusions Do manera sila, cupocgames que a lectirexté crmprubendo una mera bi ‘Blotecs de prgramactin, Lipruava-8, ue ostdcocriontemontaalmaconada ee /aguario/loral /ais_sisleotecas, antes de inataarla come bibliotacs tetdndar de sistema Supmagamos también qus los archivos de erenbeeao os tn cingwpadsn /ostarie/local/nis_inclusiores Consetucames- geal seLeaeen = lana oad is.elinone ios lacie Ls opeidn -Ile indica al linker que tome cidigo abjeto desde la biblioteca e5- pecdicads, El ejemplo suterior vincularia Libnueva. coNsei0 rs covercin Ut ge vss oa requ gud i Doles se arama 145 jagin Dinara gee, gas aca note dice smalls 2 Nae Lina 263020 (Sou wascs axes s sbboecs oo van igcteoncn tvea omen} (SE Seva bs navane ce over sciceren wiowres on deine 9 -rame oe ne Coss spe psdherninads gor aia Miiomegconparsnn dead gies sllemor necontars vincular hibloteens states, debers uilizr Ia opeén -sta~ ‘Eis Bxtosignifon que slo = utiirardn bblorécas osttias. El siguiente ejem- pp crea un archivo aecutablevinculade contra la miblcteca esttien ncurses: 8 Programacién en Linux (Cuando une vineala bibliotecasestitions, el archivo sjeruteble que se obtiene resslte muchomis grande que quand se utiizan biblietevas eomnartfias Gera que unlizar una bbliotecaestatica, entonees? Ua razén hebitwal [pare garentizar qu los usuarios pueda uslizar et programa: en al caso de ls tibiptecas comparsias el efign qua noctsita an programa pers poses w= rrerse inkea al mismo dinimiearnente durante su ejeeacimn en lazxr Se seclo estdticamente durante su compilacién, Sila iblioteea exmpertia que sequin reel programa pera pedet ser cocrito no se enquentra instalads on ol sstorem del ustaro, el mismo cbtendré ecrores y no podra torrer ol programa Elnnvegader Notseape constituye un ejemplo perfecto de este problema ‘Natseapese hata fuertanonte en Motif un costoso nulkit de programudon on X Ta mayocin de los usuarios do Licux no pacdea afrontar eleuste de instalar Motion sus sitomas porque ol mismo cuesta demusiady Uinere,¢6 smoda quo Notseape en a prdeticninatala dos versiones de su navegacor eo su sistema: soa que linksa bibliotecas compartidia, nel scape dye tL? Yun que vinesls biblioteca setaticus, not seape stetWott*. Bl propio ‘ambivo ejeatable do Netocaps ea en realidad un script de iierfaz que de- tarrina sol usuario pooce instalada la biblioteca compustida de MOU} ac- tivauno e otro de fos archivaa binaries, eatin soa requordo, Ejompios 1. Bato ejemplo crea ua biblioteca ostatica, 1dbmensajes.a. Los comandes roquerios para baeay esto son: 5 fee 6 Remnjes.c 0 Libanaajoa.o 8 46 ros Libownan esa ebnsa}es.0 Recaérdew en un pardgenfo anterior de este eapstalo que -c le indies a gee xvac un archivo objeto denominido, en esto eas, LabmensayeS 0. ia ses sgunda nea utiliza ef eomando ar para crear ana bibiotecaestitica denom ada Libnonsaj es. aa partir det mstulo objet, Li0m5g. 0 El yjemplo si jucenteutiiza cae bibineecs, 1 Pan soreane ms sera el somando o var “B comune el 302 2, Ahora e! lector dispone de una bibliteea pera peder sor likeada. Le do- bera infrmar a gee dénde encontrar el archiva de incusidn.utiisand -1, nce encontrar la biblioteca, empleando -L, y el nombre dela biblioteca atilizando -1, como se dustea equi, BS geeaoserane 9 euta.pola UY 2, -L, tenejea Un qemple anterior ereaba ruevo_hola compilands juntos mostrar.cy nensajes.c. Esta ve, cruamos nJévo_hola_ Lin linkeando a ablicteceos- ‘ace Liters) #52. Este empl ed un archivo delle denamira ‘uevo_no1a-L10 el nembre fue elopicn aqui para disinguirlo del ue a em pleata en el otre ejemplo) rinculando a Libmersajes.a,{-Lmansa}es) uti- {ado eno eiectoria de trabaio corrioate (-L,).El punts () situs el lado de la iota L representa el directorio corviente, La slida do ete progeame se is- ta cantineacion: Cecio: Complacion de programas a7 VERIFCACION DE exRonEs Vanco 36° ofece toda ana gama de opcimes de inea de comano para vetiice iia dearrores 7 geteracoa do erson Estasinsgea trek moa, vedantic errors, 7 Wall. Amodo decomienso, -pedanticle dices gre emitir todas las advertencias requeridas por ol eetiets ANSUISO Coes ‘ander. Toto programa quo utili stansiones prokibidas, tales come ag aeeptados por sex serd rechazada, -padantic “errors ao compurte de ae “25 detail ns eteaiooes OC que dose uated ee ‘na de esas opciones, ris embargo, on fe somplecta ere tlt ips per cena concirtane oa ANSUISD {a opsoa Wall inetruyo gee « que exhiba coda las udvartencian gee: Falmente relevantes que pucda en rlaciin al codigo que extd sisndo Compl lado. a que in mayoria de los programadores ‘Srotideraa objotables pio que sean seni de mocificar para evitar lage, ‘eraciin de le advertencia, Un ejeralo de taala prictica de propramacinn ox declarar una variable pero no emplearia, Otco es declarar una variable sia cestablecer explicitamante su tipo. Ejompios Considoremos el siguiente wemple, que musatea wow ay mala prticn do Brograzaciso. Bn et mismo ap daciaca main como retornando veld, consid de hecho natn retorna int, y utiliza la extensidn GNU Long long let para declarar in entero de G4 bits 7 Nene set prograan se Inensee: aimee */ ans, Anton spesamae y fiaiautte pesantie-erers deg tog ttt t= as ("Este 9 we Un programe aie iapla con Lan reglas de 6); 3 Programacién en Linx. te Tewrco ae fasncith warning rater pu oF mln! 19 not “ant? 1. Primero, trate de sompiario uilizundo verfeacion de m0 conformacion: dol espesifeador -ansiz ar podant.c: tanation “aan ecu. e:8: warniogceburh type Of Tain’ Ae aot “int FATA Lo que muestra esta aolida aa quo -an94 obligha gee w omilir los wonsojes Alo diagadstico requeridow por ol eathndar, No garastiza quo wu e6digo res poada a las cormaa de ANSLC. El programa zompilach a porar de Ia ixco Frecta declaracién de main. oF ecne FAIA pecunt.c:8- warning: return type of ‘ans! ta not “Am! Terao pape apn peri vd ai gent Esta ver l programa ro se compila. gcc se detione después de exhibir los ‘Lagadstios de error requeridas. A rieage de parecer reltezative, las opeiones de compilador -anai, -pedan Eisy -pedantic-ercors ao aseguran que se produsas ua eédigo que cum pia con les noemes ANSLISO, Las misma moramente lo gulan durante la ompilecie. Rewullaiasteustive edalar el comentario quo cparazo sn la de- (Gamentacién de goe sebre ol usode -pedantic: “Bota opin no se pretende que sea itil existe sclo para satisfecera pedas~ ves que de no ser ast slegarian que GNU CC no responce al estandar ANSI Alguaos usuarios traten de utilizar -pedantic pare verifcar ia estricta ad- Jnoreaeis de sus programas al ANSI C. Pronto encuentran que ao have del ‘thio lo aus desean: detavta alruzas précticas ne ANSI, pero.ao todas; solo squellas para las cuales ANSI C requiere un diagnéstico” Laoptimizaciin del cidigo es una tentativa de mejorarel desempete dex pre- rama. La desventaja consste en mayores tempos de compilaciéa, nayot om- pleo de la memoria durante la compllacén y tal ver, mayor tamatio de cédigo, Actualmente, gcc tiane tres nivelos de optimizacidn. La opeifn -9 sin adita- ‘mentosle indica a gcc que reduzea tanto el tama del eiizo como ol tiem pode la ejecaciin. Es equivalente a -01. Los tipos de optimizacis realiz doe a este nivel dependen del precesador al que se punta, pare siempeo indluyen porla menos optimizaevin de hilos do cornaindas jung (eelear 2) Sifrimionta de comands 99p (retorno de valores de regivros) deta la pia (stack Las optmizaciones da bile de corarstos junp intantan rade el aimera de este tipa de operaciones. Los difermiento de pops dda le pil tienes lugar cuando el compilsdor permite que los argumenton we acurnulee nla pila 2 medida que las faneiones cetornan valsees yTuego lon regress si- ‘moltdnenmente, en hagar de ir retornandolor argumenton de tn0 por v2, ‘cuando retoraa cada funeiéa Hamada, Las optimisaciones de aivel -02 inchuyea todas Ins optisizaciones de nivel 07 mia toques adicionalee que ae vincalan con Ia manera sn que 50 llovan & cabo los cemanos del pracesador. Ea este alvel de optimizacion, e compile dor intenta garantisac quo el provesador cueate con comandoa para ojecutar tmicntran expera por los resultados de otros comandos, Bl compilador tam- bien intenca compensar porla tardanza de datos, que os la demorm ocaniona- da por el tempo que requiere obtener dates deade el “excondite” ola momo: fin principal La impleatentacién de esta gptimizacién deyende en gran parte del ips de procasador scbre el que serealce, [Las opeiones -03 insluyen tadas as optimizactones -O2, desenrollo de lazos ¥ otras prestaciones muy vineuladas con o.ti90 de procesador. Segun sea la cantdad de sonocimiento a ba aivel qué uno tengs sobre una familia dada de CPU, podra wilizarla opeiin -Tf Lag para requert las opt smizaciones expecificas que se desea lovar o cabo, Tres de e0s indicadores (fags) mereesn consideraciin: -ffastaath, -f inline -functions y -fun roll- loops, -ffastrath genera optimizaciones sobre las operaciones mate- tmstieas de panto fotante que aumentan la velocidad, pero violan estindares IBEE vio ANSI. -Finline -funct ions exsande todas las funciones “simples” durante Is compilariin de un programa, de manera similar alosteemplazes Ge los mscros en el prearocesador Bs el eompilador, sin embargo, el que decide cudl consttuye une funeién simple y eudl na snrel1- loops instraye gee para que dasonralle todos les Iazae que tan. an un mimero fp do taracionen, siempre y cand dicho ncmare de ira- lenos puede sor daterminado duraate la compilacisn, Desensol.ar un laze Significe qus cada itaracila del mismo ze mnvertira an une sentence indivi ‘Eeal. AG, por ejemplo, an lazo que conste de cen itsraciones se converting en {an bloquae sovueaciales da cédizo, cen cada una de ellos jarutanda las mis- ‘Sab sectencian La Sgure 13 lstra grifimeeete en doeansella da las Obeervese que la Ggura simplemente munstre el principio general del desen- rollodelazos, El netodo que omplee geo paste aur dedsticamoate diferente 20 Programacién er Unk re ar Lasoptimizactones que habilitan -femiine-functions y -funroll 4095 pueden mejorar en forma notable is velocidad de ejecusion de un pro- ‘rama porque evitan Ia acumulacion de liamadas a funcioaes y busquedse {ie varables, peo ol precio eshabituaimente ua gran increments eas! a ‘mano del archiva ojecutable o el archive objeto. Rs mtostiin de experimentar para dsterminar si ol aumento de velnexded de sjecucidn justice ol aumento ‘del tamaio del archive. Ver las péginas de informacién de gcc pare ootenes ‘mas detalles sobre os indicacores flags) -f para el procesedor Fabra 0 nia Figura 12, £t desearotte de tezos expande tos lazos de menera similar ata ‘que al preprecesador expand los macros. Sic a conseso evar, cor ur nel 3 etann 02 eta suelente Ain rear ecuatos, es como oldoia anor sccon “comple: cmishen oe wet Sao, ‘2 eco" srl pescen eauconas on lomo do cSlgey sesh noses taeonaldesenaeta Ejemplo kta situasién atliza ol maxima aivel de optimizaci6a, 09, pars compilar los lisiads 1.2, 1. y L4, Compa el tamago del programa optimizado con el amano del programa o-ptimizsdo. 4 gee oh aasajes.t mstrar.e -0 meus mate 5 ls 1 wave pola Poe mek 1 Harel) usin yay Jud 20586 queve. nate" sav mnsaja.© toasar-e vo mae tts Pea roa pox PME MehL stutrios ster ga 12-217 eunsasnatae [Le opeiin -00 desuctiva teda optimizacign. Aunque la diferencias paque- 4a, solo 16 bytes, cetera resultar sencllo comprender que programes me srandes produerda mayomes alrros de espacio en disco te Ba = Covit.io 2: Comaltaeton de programas = 24. DOPCIONES DE DEPURACION . Los exrores (bugs) son taa inevitables como la musrta los impusstos, Para sobrellevar esta triste realidad, ailic las opciones -g y -ggb de goe para lnsertar informacion de depuracion en cus programss compilados, Estas op- cones facitan las sesones de deparicin. ‘La opetin -9 admite tres niveles, 1, 203, que expecifian cudnta informa cia de depuracién inclu. nivel predeterminado es 2 (-g2), que incluye gran cantidad de tablas de simbolos, aimeros do lineas ein‘ormaciin sobre ‘Variables iceales y externas. La nformacida para depuracién de nivel 3 in- cluye teda la informacisn del nivel 2 s todas las definicfones de macros pro- sentes. El nivel 1 genera sé la informaciém sufciente para crear rastreos hacia atrds y wolcados de pila. No genera informaciéa de dopuracisa para ‘variables locales ai para aumerce defnes Sil lector piensa oraplear el deparadse GNU, gdb (cubiaro onal capitate 20, “Us tos da depurasita”, a amploede la opeitn - gdb ereainfeereacién adicional que fcilita ls tareas de dopuracién bajo geb.. La opeién -9ga0 acepta el mismo nivel de especifcaciones que -g,y éstas producen los inisinos efectos sobre Ia salida del depurador La utilizacion de evalquiera de las dos opciones de habilitacion del depuradorineremontaré aoiailemente, sin ext- barge, ol tamado de su archivo ojecutable. Ejemplo ata ajemple fe miucetea obmo compilar son informacisa do dopuracién o iustra of impacto que los simbolbs, que controlan la depuraciéa, pueden ter er en el tumaio de un archivo eecuiable, Una compilaci y linkeo comu- ‘es del Listado L.A peedujo un archiw binario de 4089 byes on fl sistem [Los tamatios obtenidos cuando compilé al mismo ebdign fuente eon Ins opeio~ nes +g y ~godb puedea llegar a sorprenderio: sjee og betas 9 nota g pea toe Pox Phueeall eemrioy cee opt malas -o hl gate fis Lu pee Pee ron ree V hire unarsoe S87 Jul 1321549 ola goon 80 ul 1 21:09 ma ge (Como se podra apreciar, la opea -g incrementd al tamado del archivo bins so resultante en un cincueats por ceata, mientras que la opeisn -ggdb Lr {Noel mismo archive casi un avvectentos por eleata!A pasar del aumento de ‘amafi, se deberia proveer a los archives ejecutables con simbalos estancdar de depurscien (creados uslizanda -9i para el caso de que alguien encuentro alga problema y trate de depurarelcédigo en lugar suyo. Programactén en Linux CONSEIO Coma cea geval demure crime, opimice deiouts No wren, snares aie “opt nas seuss” grieve "ma ere n cerca eco dura aeoceso de tsa” .a.opb meso, on asta canta, seater alss esscones (ue MPodsoe ‘sonar cameeadss on ot seco, U7 byes defo y agar scene Se ‘Selo gr 29a un bat adecsedny tla lgtnos vies purée ne net ‘acest oot, dun cuands aba esta tira run Ene [a implomontacién del GNU C extionde ol ANST C eiténdar de diversas ma eras, Sil loctor ao le importa egeribie un eédligo quo abierarsente np rev ponda al estindar ANSI/($O, algunas de estas extonsionus purden ser rouy tiles, Para encontrar un tratamionto completo de la extoniones del pro yesto GNU, ol lector eon inqutatudeo purde rsforieee a las paginas de infor ‘mucin do je (on arpasil, proabe al eorsand info gee "C Exten iors"). Las oxtenstonos eabiereas om eats aeeiéa son lax que se ven frocwontoetoate ee oa ancabosadas del kernel y ol cédigo fuente de Linx, Precaucion 2 wonera on ef coey near edt erg, UD et eee on ‘ensiones GNU. au sddige ntlo compilar® adecuaciemont Pet ave drestamoste coriph iso gis ae probs as conn ero shen aren ‘ki tcton cnn leno unladen ott Caen oe et roles se np sen Se mee an bs Sages rte couch cs Se ‘Shoop iO rs enor ta ota igen Suro ese ner a ‘arn medrol gt protec set Sen arn ur ean tego or oe gene mea Para proveor unidados de almscenamiento de 84 bts, por ajeasple, gee oe ol tip lang lang iat, ullicado on al Lists 15; {iy frm wr siterk tae NoTA spo Long Long ant fea parts cl baradr del muon stxa59 ore Et atiro {Sibu un borer an sega seus Tuy powsconalades ates ac or Bala plataforma 86, esta definicia da como resultso una ubleaciin de 84 bits us memeria denominada 2ong_int_var- Oura extensioa goo que se en ‘outrusd en los archivos de encabezido di Linux ese) emples de funsiones (ling Siempre que see lu sufilentemonte corca, una foneion inline 36 x. pande en el eidigo compllady cas de la misma forma en que io have an ma- fro elimina ast ol costo de una Uamada.a una funeisn. Les tanetones n> Jing son mores que los macros, sin euibargo, pargueol compusdcr Yenc su tipo durante a compilaciin. Pare ubilzar finelones fuline, las tens Cactulo ts Comellacién de programas 28 {gee cempilar con, por lo menos, una optiminacién 0 y prosoder ln dofinicia de Ja fancién con ia palabra reservada inline, comose ilustra aqat. a) La palates reservads attribute le suministra a goe mayor informaciin sobre su cédigo y ayuda al optimizador do cédigo aroalizar au tarea. Para utilizar an atributo de funcién, la regia general on agreyasle _attribu te__ ((attrsbute_rane)} despus del pardetenisde enero dela declars- on de la fancién en que se fo emple. Por ejemplo, las funciones astandar de biblioteca, tales como oxit y abort rons retornan, ari qu ol compiladar peda govorar an cédigo ajeoutabl li Geramonte mas efciente «20 fe informa quo ease funcionea ao retoman. Por ‘supueate, ls programas a aivel de uauacio pueden defini también Suncie: fea que ao retornea. gcc le permite a una eapecificar ol atributo narevurn para dichas funciones, que actus como una sedal para que el compiluder op: ‘mice la forcion. Asi, mopongamos que us tiane una fancia denominnda torminar_si_o ror, que nunca reterna. Su declaracisn tendria el siguiente aspedt: vos araisur si erreefeis) _arzribiea__ |{roretun)}j formalmante ae la definria ast ‘También 2+ pasdan aplicar stmbutos ales variables Bl atsihute aligned {nssraye sl compilader para que alines le ubicacion on momoris do una va: table acbre un mite do bts expocifeacs. ln inversa, el atibuto packed Ip indica a gee que utilice la minima carsidad de espacio requerids por va- Fables convencionales ode tipo struct. Uullzado con variates de ipo Struct, packed elimizars cualquier tps de telleno que 9c nermalmene ‘nsertaria con proposites de alimeacién. Una extension teriblemente til es la de rangos para los zentoncine case. La sineanis es similar ln siguiente: case VA_MPERER ... WLR SUPERIOR: 24 Programacién en Linu %e Obséevere que ce requlere de al menos un espacio antes después de Tos ‘Pantoy auspensives, Los rangos para case se utilizan en las sentencas awitch para especiicar valores que czen entze valor. inferior p Yator_superior, comp Ip ilatra el siguiente Fingmeato do sécign, var enter) ¢ 1 8 cage va aus +) rans seas , Este Fagmento eo equivalent sepia, grtaray 1 eotigo v4 aut +) Qtwiamente, ol rango do ease os simplemente uns notacién abreviada para 's sintans tradicional do la sontencia switch, por es realmente conve, none. 1 Este sfomapoiluscra el empleo dota palabra rvseevada inne. El pl ‘22 itera por un la2o 40 veces, ineromentando una variable cen vada iteracién 1 fants dat prograna an iter ‘hic - Vslizieian ae 1a piuanoe Pecavida Emliw, gun geraite * geerar turciates aipastitan curanen Ja somttacion 08 Int aremane(int 2) Sapiuiot: Compiacion de programes 25 3 ejempi tan simple es posible quem» va incrementnsodisminucio- ‘es signifcativos en ln velocidad o el cama dal cédizo. pore el ejernplo si ve para ilustrar cémo utilizar la palatra resorvsda inline jo muestra cima utzar la palabra reservada attribute y el ambitn como utilizar rangos pare case, 2, Bate siemp atsibuto noretura sheralved) _atteinute_ neretur) 26 Programacién en Linax be 3 conta ta) ‘ -snaravoia) eatin: ' ‘enga culdado, cuanto redacte un eddigo que tenga un In20 infinito como el laze ante ce este programa, que exisca un punto de sali, tal como salie el Lazo custo of contader dol misteo alearce cirto valor. Para nuosteos propésitos actuales, sin embargo, el ejemplo ilastre perfectamente cémo fast [Sona la extensién que permite especifcar el rangodo case, Lasalida de a te programa es: ‘La extensin para Ia eapeciieacin del rango de case se comparta de lt misma ‘manera en que lo har una sentencia C482 normal. Cuano i alcanzuel valor 8, elo del programa lega al Hoque default, se ojecuta terminar_ahora, yyelpprogrsma termina. ‘3. Bl elemple final tlustra el efecto da tiizer el atsbute packed con una ee cructura, El programa merameate imprime el tamaiie de las estrusturas y 505 miembros constitutives, 1" Santee ol arorrae an Eaenetspaskne.e +) + sonactare- epuisaeion el atraeto packee 4 gee Capitulo 1: Comltacion de programas 27 MTADA ( rice ML, tore peiswr areal tm ast gen vermis sera COMPAETN cutee sonmn anpucna 1 apeinir ok anato ce adh mueaen pura ropstas on comartctan +) sends aregle(S} «ME Byt\e", 21 tinso of ow = Se bytes, steel) terustistanen, "41 tate oe sore goinar_areala(3] = 4 orcen semptart) = 3) olf ae tanita de bz astrucurs conpactace ) ex » 80] ale Figura 22. Lav variables de expansiin simple ton procesadae completamen ‘ela primera ves que son esaminads, ‘ua figura 2-2 muestva que eda voz que se referencia por primera ves una variable do expansica simple, daca resulta to:nimente expaindida, Las asige nacianes do variables del ino tquierdo del signo igual agoptaran los vaio res que se encuentran det lado derecho, y dichos valores no contendrés rofe- roncias otras variables. Ejemplos {Esto malefla utiliza variables expandias recursivamonts, Come ss hacs rofovencia roperidamerte ala variable 00, el make no funciona, £1 archivo hola. c este tomade del capitule 1. eee co + s(0t) a sola: nelae Ge) polss a neta suiatla:s: fousive yanable ‘Ce? sefenencee (tei? (evitislly). Sep. Come seria do sperar,make datects ol emploa racurtiva de CC so detuv. 5 ee ASS Cesitlo 2: Control del proceso de compilactin:elmake deGNU = 45, 2, Este makefile ublize variables de expansion simple en lugar de as varia bles de expansica reearsiva del primer ajemplo. pels sane fice) nes nels fee oc palne 3 pale Ents wor, ol programs compile aormalmoate ‘VARIABLES O€ ENTORNO Las variables de entorno ser las veesiones do nae de todas las variables te centarno ée la intarfar. Cuando se iiss, nake toe todas las variables defini- dasea el ectorne de Is interfaz y crea variables con lop mismos nombres y valores. Siz embarzo, las variables éel mismo nombre presentes en ol maka» Le invalitan las veriables de entornn, de mato que tenga caidado, Fjemplo Este makefile utiliza la variable SHOME que hereda de la interfas como parte de una regla para coratruic ef target fo9, to sie} t20.6 ee HOE) F00.2 2 HN) 00 fake: 16h rule to ate target Inoeeiart mtlfon.c%, eased by "20'. Stop El mens de error exhibido cs un tantoengatiosa. Cuando make no pudo en- ‘ontrar /Noze/kurt_wall/f00.¢,listado com depencencia dal target T00, imerprets que debia de alguna marera eonstrur primero 190.c. Sinembaspo, sm puda encontrar uns reglt para alo, de modo que exhibié el mensaje de ermot \ytormind. Lo que se pretends, sin ambergn era demostrar quo ake herei6la ‘arable SHOME del entomno dela intarfar (/homo/kure. wall, an asta cas) warasiss suToMATiCAS Las variables automartcas sen variables cuyos Valores son evaluados estls ver que se ejacuta una regia, bsdndose en al target y en les dependencias de esa reple. Lae variables autemstioas se emplean pare crear regias pa ‘rsn, Las reglas patrén son instruccinces genéricas,talos como una regia aqueindique cima compilar un archivo.c arbitrary au earreszondiente 43 Programacién en Linux tg ae archivo -0. Laa veriables automsticas tienen un aspesto bastante criptico a tabla 2.2 contione una lista parcial do variablos automsticas, ¥ Para’ cn rir etait io ote aragias ptt, vor "Rass rat’ pga 49 Tabla 2.2. \aiabies avtomatcas Variable Daserlvelin so emt de un achive target ronerte on Una a s Represents fs poten 96 erle de un amr de rehio se Rearesents 0! name do archivo de piers dependerciode ra oan s ‘Se expander gar a ya ita elmitasa pox especies se onas lan depangercias a une cea sr Se eipande para der tga a une sts etinitata poe especies de toto Is ceonereica do uno regain aoa mis muons fe large 5,00) ‘tol aegot desig so encuer en un subavecnt “rmlbleveronertala gaia crrespundr «la croctoios sia) Slet:argtcesignado so oncuerea on un substi, este ‘ninblerepresorta io parte corespendbre al rombre ela hoe taruta ce acease imsixa Ejemplo i fragmento de makefie que viere a continunsién del makeSle del capitulo 4, *Precetos" utiliza las variables autométieas S*, $<, y $2. cans i= 8 ice) Sens) 0 $1.6 eid: inasidece Stee) sions) Se 0 58 sess a. Sie) si¢Rass) See 8 bg upian.s 0 imeies 9 fesse 0 is 2 primer carpets una regia fmpliclia 0 preetnida, (Las eeglasimplicinas ‘se explican on dexaule nde adelante en este mistoo expiculo,), Estabteve que, ‘pars cada gonbre de archivo que longa Ia extensign -c, se ctear un archi Captus 2: Control del proceso da comptacion: et make aecnu 47 ‘voobjeto de extensiin .6, utiizando el comands $(CC) $(GFLABS) -c.EL termina $* .c. representa cualquier archiva de. qirectori corneate que tea- galacrtensiin .c; en este cam, prpads.cy iss.c, Cau ie roostearon las comandso yalcadas al ispaitivo cctindar do alla (ue, salve advermacia en contarie,conaideraremos Sempre in pantalla del ‘ouniton, naa reemplané $¢ con ia primera depundencta proconte on cada co fa. pepids.cy ad0-¢. Demanere szilar, la variate automnética $B presen {eca les comandos destinados a constrais pepids y ids oe reempluzads por tos nocrbres de lo targets pars estas reglas, Prpids y 443, repectivamente, ‘VARIABLES PREDERNIDAS Ademuts de Is variables autométicaslstadas en Ia satin 2.2, el nakede GNU prodefine certo numero de otras variables que son utilizadas ya sea ‘como nombres de 9 pars transtorir ndicaderes y angumeais a (eeoa programas, La tabla 23 isa ins variables predefinidas de wake de em- plo mis frecuente. Ellocter ya na viste aigunss de ellanen los makeliles de ‘jemple de aste capital. Tabla 2.3. variables oredefnizas pare nombres de sragrama ¢ indleadores Variable Descripelén Valor ———_____— predeterminado x Tove de warps dl orogmme de a Inovterimente ge senor compactadot as Nem oe arene oe ensambiacer = oo Nebr ge arco ce conpiacor de © CrP Nem ae archivo cet areaccesador de 0 aw Programa sara rina archivos me ASFLAGS nodes ov programe de " ‘mantenimients de senor cemasctatot ASPLAGS Espucreaaues Ge opeones para el nsarbiader ——‘Noay CFLAGS Esnenfeseares ce epcones par el conpaaer c=.C _No.nay CCEPFLAGS Especifcacores ce epcoras para el presrocesador de C No nay LOFLAGSEepecitcaseres ce eoconas ora al liner ionay i dltime ejempl de an makefile utiles varias de estas variables predetiai- das, Et lector pusde redefinir estas varsstles en su makefile, aunque op lx ‘rayoria de ls cis0e sus valores predeterminados son razonables, Redefina- [gs cusndo ol comportamuenta predetarminal no satisfagu sus necesidedes, cuando sepa que an programa presenta en us sistema delerminado ne tis- see ls misme suntacs para las smadas. Ejempto Fl makefile de exe slemalorescibe Is del jemplo anterior de modo de untizar ‘Solaments variables suse tions j predefinidas donde sea posible, y oredon fe los valores predaterminades do las variables predebiidas que provee MaX2, Programacton on Linux te pena: pep. sc) stoRuas) Fe 0 69 st.oRIG8) S100) SterUR) $5 -2 $8 SILOFLARS) ‘La lida que genera onto makefile ws leremeate difecoate de is de! ejemplo ce apits.c 2 pigs [Sstasaida muestra que nake wtili26 el valor predeterminado 6 CC, cc, en lugar de 920. En la mayoria de los sistemas de Linux, sin embrago, co come: ‘utwe un vinewo simbolio con gec (a ea¢s), de made que la compilacisn, fincons ewreetarante Regias implicitas hata shoca, los wakeiiles de este capitulo han wtilizndo rogias explcitas, Foglas que radacta ol propio programudor. wake incluge un extenso conjusto dd rg implicitas, » peedesinidas, tambien. Muchas de ellas sn para proe ‘outs especiales y tienen un empleo limitado, de modo que este capitulo ‘ubre seo unas pocas de las reglayimplicitas més eomdamentowtilzadas, ‘Les ogies implictas simpliiean el mantoninniento de los raleniles Spans quo un aakefle haves estas dos regia prot prog. rene serene {as do regia litan dependencias, poew no raglas para constrair sus targets [Bs hac de termisar av ejecuc, sin embargo, nake intentaré encontrar y uctisar cegiasimpifeeas que le permuitan construie ios targte (el lector pue- ddevecitear que maxe busca reyias implica abservande le selida geae-nda, por eldspurador exando se wilza la opeisn ~d). ejemplo Bila macafle de aspecto sumamente brove quo viono a continue ervaré Pprpsds utlianda dos do ls reglas implicitas de meke. La prancra define 6s erear un archive objoco a partir de un archivo de eédigy Ateate de C. Laseguada define cémo crear ua erchive binarfo (0 sjerutable) a parr de snamhiroabjetn, aks = aptc.9 8 ‘Septtulo 2: Contr del proceso de compllacién: et nake deGNU 43, ve praline 2 situ puss seme Gake invoca dos reglas implititas para construir Lmprpids. La primera regia stsblce, on eens, qos pam sada arin objet sst@_erchav0.0, de ‘berd buscar el correspondiente archivo fuente este_archivo. cy construir el archivo objeto con el comando cc -¢ este_archivo.c -o este_archi. 40.0. De modo que make bused un aris fuente en Cdeneminado inpr- bids cy lecompié yam cbtmnerel achive cjet inprpids.0, Para con {rural ret predeterninado, inorpids, rake alist ora rgia gic {us ertblens paracada arch oboto any aombre cea eate_archsv. 9 lecuar ol likes saceara pare obtener archive eciable final welts sloumsioGe sate archiva.o -0 este archiva Regias patron Las regias patrin proveen tna manera de que uno define sus propia regis implicitas. Las regias patrén tienen elaspecto de rezias normales, excepts que el target contione eractamente un cardcter (4) qua representa cunlquicr ‘cadena no vacia. Las dependencias do una rogla da oste tipo asibsia am- fleas & coe ol fin de coincide com el targut.Aat, por jam, la ropa Le indica make que construya cualquier archivo objeto #ste_archivo,ea partic de un archive fuente corraopondiente deneminads 08%@_archivo.0, ‘sta regla patrén también resulta serra de las reglas patrén predefinidas e nake pero, igual que loque suzede cos las variables predetinidas, uno puede redefinirlas para acomodar sus propias necesidaces, Set) = StORLARS) OOPRLAS) 4: 0 aH Fjempla i makefle que viene acontinuacén os similar al anterior except. qua ue lea una cepa pation pare cear une regia pis peracadzata, dna rel ueunrie,yara comple yiahear cig heats eaO, yea un tr fap prdetcids para ineor el artuvo bjt i do eran el a Give bari cal. es SPS FS SPF EELPA ) fa roaranmasite-sa tiene, Cositule 2: Contrel dal proceso de complet ai make de any St Sorte alcjamientoe Rnaleson ol lesyatem y entablee adacutdamente pemmisos dt sce) storia) $6 -0 8 archivos yde propiedad . Eltareet instaler tambiéa tipicamente compile l programa y puede, a ‘ ‘mds, correr una sencilla comprobacdn para verfcar que el programa se Be 1 Geta sanonario vo sa soto por eatecar un somenearie acompilade ceresctamente Un target uninstall suprime ls architos . Jnstalades poral targut install sprain + torte 9 Un target dist es una manera convenieate & preparar un poquete de dis trbuaén, Come mins abenlato, ef tage st ekaun aces sn. tanta ajecutables como objeto, del directorte donde se llav6 1 cabo Io cons: Saw ‘truceién, y crea un archivo comprimido, tal eemo un archive tar 9 tartall ‘i ar ‘realizado con guip. list para aor solocado en plgina ea World Wide Wel octsn.e | mpepa.e Re -9 08 -¢ Inratts.c inert. sition FTP. ee norpite.9 <0 tnrpian i TPS Uy regla pasrét dofinide por ol usuario fsetué varias cosas: t Nota : . {programa g2io es an coneresrystscomertar muropens e wcios av Cambié CC goo. comomne cong Lngas cite e sompratn fa a du ogre *+ Anadis ol especifieador de depuracien de goes, -g, yelespecitendor I ‘Sor rovers 2 os proyecton AU ym eam vont pcre den satan pero 0 9 Ejemplo El siguianss maleaflallotera cfm croarlos targets install dist, ¥ Uninetall, utlisands ul ya sumamaste teillde programa hela. {do optimizaeién, +03, 9 CFLAGS. + Utilize tus variables automticas $< y $@ para reomplazas los nombres suucesivos de Ia primera dependoncia y ol target cada vez que la regi fue apieada. ‘Como se pusde vera partir de a salida de make, la vesla personalizada fue splicada al makefile tal como ae ln expeeifeé, dando origeh a un archivo ee cutable simaments optimiza que contiene, ademéa, informacion integra dda en ol mame dobre su depuractin, Scien esta $< $108) ‘Se punden nsertar comentarios en un makefile precsdiento el comeatari con lsigno de sumeral(#). Cuandomake encuentra un comentsro, 1 proves ni fl signo de sumoral ni el rasta de la linea donde éste se encvenrs. En un ma- kee los comentarns puedon i coloeados en euslquizr Inga, Se debe torgar especial consideracién als comentarios que xparecen ch os eamandas, por ‘que is mayeris de as itarineastratan a # como metacsracter\generalmente ‘com> un delimitade de comentarss). Por i que eoncieme ameke, uns lines prow gust snnstalt que contiene silo un cumentano equivale, para todo prepésito préetica, @ uns auton lunes en blanco. El qemglo anterior ilustr el empleo de comentanos, Nake ig- Si) sei i ‘uofetotaimente las cuatro ineas que consistian sélo el delmicador de somen- Snake scald trios lasdos liness que conienian sblotexta y no comands & sol, Targets itiles para un makefile soatatt pals ote presennol i * sma ist Ademés del target prolijar iusteado antarcemonte an sate expital, 2m Jos maltoflns habiten gensealmante nasiea oteea targets. Un target dene sade install deaplaza el archive final ojocutable, cualguicebiblictess > eript de intortasrequerides 7 Is documestasicn que pudioes eaisti w sus car env pola. tir. Dols.s Watattle prov Programactoa en Linux tof (ai grareipalitart may tela rake install prieseramente cena ola y fp fnatala on ol dlseotorto oo pescado. Esto lustra ura lela: vantajas de wsliear variables de make SHOUE evalia al valor coerectoor cualquier sistema en quo cra make, y por tants co caquineo ser sopecificada onplivitamente en el maleate rales ist olimiaa tedas los arshivos reaidwaloa quo pueda baber dejado i cons ‘russia clas como médulon objeto yatros archivos tarsperarien, y crea Io que equivale.a une distribacién do cédigo fronte lista pare ser publicada ex Intorsat El targot uninstall, Gnolmente, elimina en seputde plano el pee. rama inatalade Si el lactorIlegaso a toner problomas easndo wtiiza nak, la opeiéa << loin en a make qu imprima gean caatidad do informacion adicional paca dep: én, ademis de mocteas los comancioe quo fe anruentre ojecutando. La se lida ebtenida modiantovsta opsién pusds sor abrumadora porque ia informacién eoleada mostrar qué ov lo que hace Mak internamente y por qué. La salida gonarads por ln opsidn do depurasiéa iaciye In siguiente ins Bema: + Qué archivos ovatia make para efetuar una zeeoastrucein, + Qué archivow'etia onde comparadoe y cules son to reaultados de le comparacién ‘+ Qué archivos son los que verdaderamente nocssitan eer reconstruidos + Qué roglas implicitas considera wake que wa s tice Qué rogias implcizas dnd utilizar make, y Iv correspondientes co ‘mandbs que «jecutara La siguiente lista contione los monsujes da ceror més comuiaes Que pueden sor omontrados cuando soutilisa mace yaugiere eéme resolvelte, Para obte rer la decumentacién completa, reforiea al manval de male o, mejor aun, a las piginan de informacion da nak (ule al comands info “GNU nak") ‘No rule to make target ‘target’, Stop-nake ne pudo encon- trar una regla adecuada en ol makefile que le permitiera eonstruir «, target designsdo y no puede hallar roglas predetsrminadas que le sean te utlidad: La solucion es whiear ol target eausante del problema y siedir una regla que periita crearlo, 9 modifier la regia existence srgat’ is up to date. Lasdependencias pare el sarget desiyzado 150 han cambiado (son ma viejas que ol target) Eto ao es realaienie un reaseje de error, por, si a lector quisers orsar In rewnstruccién del farges, encillamente usa la utildad touch pars modidcar la fecha y ho- uel archivo, Bate lograré quemake recoustruyael target en cussion, ‘Capitulo 2: Control det proceso de compllacion: et make da GNU 5S + Target ‘target’ not remace because of errors. Tavestgar ‘un error mientras se constrais al target designade. Este mensaje s6lo spsrece cuando se utiliza Ia opciin -k de make, que oblige a éste a con- tinnar stinque aeervar.errores (vor tabla 21, pégina 97), Cuande apa rece este error exsien diversas solucionas positles. Hl primer paso s=- tia tratar de censtrair so el target en cusstin x, basindoss en los srrores gensrados, datsrminar ol siguiente page aprepiado, Ve spin“ de nae be hata sea enmyot dea en ae 24, "Opeanes Some lea. + nos_srocrara: Comand not found-nake ao pide encontrar nom _prograna. Esto ocurre habitualmanta sorqea nom programs ha ido rial tipendo o np 9 encuentra ineluido ux la variable de oatorno ‘SPATM. Indistintamento utlice dl anmbre completo del prograssa, in- sluyeado su ruta de acceso, ataca la ruta completa de eceaso a noi “prograra a la variable SPATH de make. gat option - option Ta invocaciin de make inclufa una op cia que make ao roconocis. No utilize la opeiin que aeasioné ol senile: ETc Este capitulo le presanté al loctor ol cemanda Wako, explicindale por qué co: rulta dtl ycémo utilzerl, El lector eventa ahora con la auiceate base com pra comeazar a wseribir y oeplar programas simples on el entommo da do- sarrollode Linux. Luego do presentarie una vista projiminar del programma que haba construide cuando haya conplotado esto libro eaptulo 3, “Azerea Gel proyecto", Ia Parte I le permite camenzar a programar conerotamenta al ensefariecémio programar Linus a nivel de sister Elector eomenzara con 1 modelo de preceso de Linux, cubicrt en el canitule 4, “Proceaoa.” Acerca del proyecto [Al final de este libro se encuentra el eédigo fuente completo de un prosrama de base de datos para CD musicales, wtalmerse operative y funcional. El ‘mismo fue disefiado con el fin do reunir en un nice proyecto qushas do lss thenicas que oe aprenden en el libro, de modo que elector puna ver cal tas do estos topics, tales como el mangjode archives, ln slide apantals om odo terny In AI de bade ds, enen entra hres como u2 o coherent, Una de las liritaciones de muchos Wbros de programeciin de aivel bitin 5 que, azoque realizan tun trabajo exoelenta el mostrar al lector toc tpe de tienicns, herramientas y detalles, no muesteaa cit todos eave elementos fencajan entre si, Eso no es calpa del autor, sso del materia, que neeeead: tnente tiene qué cubrie demasiado terreno. También refljacl formate det fénero, que sapona, de forms correcta, que ano quiere aprend como test 5. 32 pero que habitualmenta pasa por alts, debido alas emtricsiones tt cnpacioy que impene Ia induatrin aditavial, la necesidad de elaconay ent" Si todo ese material, MG coperanaa os que este progneto de pregramacitl cfrears una solucién a ese defecto petencial = Programsctén oa Linux ERE Oe ee ‘Bl prytoto que se complotard en este iro os un pregrama de base de datos pare CD musicales. En realidad, el mismo va se encuentra completo, £1 so. ‘or ied recorrieado sa éisena y creacica médulo por modus, a mentida his {gue por bioque, para ir ganando una mejor perspestira acerca de eSm &. ‘material qUE va aprenciendo on aste bro ve encajando entre si. He tratado do haner este programa lo mis modular qué fucce posible, sepa ance por lo tants Is interfz2 do usuario del edmiziateedor de base de datos ¥ colecando el eidigo que ne fuse transportable on tan pecos méduloe conte ime resultd posible. Ademis, ol eédigo alajndo on biblicteces, tal come el de las cearves bibliotecas do base de ator, 20 encuentra rodcado por +l cAdigo dele aplieacén, de modo que aunque la izoplementaciga vaste le inictfas pormanszea igual. El proyecto ng akaaienta pervoncl, al menos desde int Dorspectiva, Yaexiston machos programas cemejantes dade vueltes por lll siganas de ellos macto mia rieoa on prevtacionos y atcustivos de ter Que Sete, Pero ninguno de ellos hace lo que quiero quo hugan ydela manera fe que quiaro que lo hagan, O sea, este programa satisfuce un anivelo, Lo su constituye ana de lan motivaciones que slientan tos ls trabajos de ‘écign fuonte abicrto, tal como axgumenta Brie Raymond en su excelente artieudo, Le catedral y el bazar. Para dbtenor ol sexto completa de wste trabs- 1p fundamental, divigirsoa http: / wow. tuxeco .org/esr/uritings- _pethedral.-bazaar/cathedral-bazaar.htal, Componentes y subslstemas Anasivel mas simple proyecto conse de tm programa gjcutabie dene a lead contd c1Len¢e come, adessadopiruser eaplead en pnnes de nortan dint pera de UL, teraz usuario 20 6, F tresmidales de ayuda, com pantal.e, estor-db. cote uti idages_goveance, ua elaine’ ear cada und dees médolos de eocientnn Tuntedas oa a figura So eerie Figura 3.1, Relationes entre los programas y el ego de ayude, Comose puede apreciar en la figura 1, los programas lienta ve basen en las ‘ritinas, 0 servicios, que praveen odn_pantalla.c, gestor_db_can.cy utilidades ab_can.c Crptula & Acerea cel proyecto. 87 cliente _cam.c recor y separa Iasopciones de fnea de comands 7 aus armumonins asociadas de agregar sininar, procurary busoar regietros dala base de datos de CD. La totalidad desu diseto se halla centeada an que sea tune utilidad de linea de comands adecuada para sn empleo en quienes de {nterias: Noes interactive y reoma cdiges de ervpr adecuados sis pula ser utilizados en un escrito de interfer. cliente cdn.c lama rotinar defnides en gestor_db_cdm.c pars que ofection ol trabajo do accedor a la base de datos y desplazamse por la misma Ademas de utilizar «] administrader do base de dstov gestor_db_cdn.o'y Ins funciones usiltarias de_d>_cdn.c, intertaz_usvario edm.c tame bidn llama funciones preseates ea cds_pantalla.c,cda_pantaila.¢ ‘sacapoula la furcioaaldad jeovista zor ta biblioveca de ncirees, stargandole interfaz_usuario_odn.c ls eapscidad de piteelar la pantalla, inter pretar pulsaciones de tela y exhubir datos a base de dates Los modulos de apoyo, a su ver, se basan fuertemente en lumadas a sistema ¥ otras biblotecas de refereacins, g2stor_d0_cdm.c mintetize,o encapsula, {oda la funcionalidad de baso de datos qué requiere cLiante_cda.c. ELmé- ule de base de dates cnasiste de envetorios de furciones qué interactian con la base do datos. Sin embargo, cliente_cdn.c, fuera de emplear anas ‘pocas deelaraciones expecticas de buses do datos, no necesita saber anda so bre la interfuz de i base de dates para atlizar a AFI de bare de datos. Al -nplementar los datalles menceos de Lreionalidad de la base do datas on wa ‘médiulo sepurado, ia implementacién principal puede cambiar sin necesidad de medifcar el digo de ‘a aplcacién. Este tipo de modalaridad resulta esen- cial para poder escribir programas que seaa ficiimente mantonibles, Etoddigo de administracién de pantala do cda_pantalla.c lleva acabo una mneign similar para el cliente GUT, nterfa2_usvario_eda.c. Aisin l 26+ igo del médo principal de fos detalls da la respectiva Biblitzea de ncurses deadministraciin de pantalla, lo que permite mediea® la imolementacién do fea altima sin aftetar la apliecién. cOm_pantalla..c tambien permite a interfaz_suario_cde.c cnncentrirse an transforir datos desde I haae de datos baci Ia pantalla. lo que es su propSsito primario, en lugar de tener que euparse también de redibujarla pantalla o exhibir un exaire de dislogs, Este capital le ha suminiatrado al lector una breve introduceiém al proyecto de programacisn que eacontrard al ial de libro. 72 cis Nesta cpt sr st projets fa ariranath jurt cor stat abit St ‘uno encore “Poyets de angraracr: nasa dm cates 29 CO vo rsa Entre este momento y aqua, sin embargo, le queda al lator mucho terreno porcubrir La Soccién 1, “Programacin de sistemas’ enmioaze con un and [dw de los procosse ds Linus, seguide por un eapitule bre sodalca yu ma. sipulacisn. Poona apliexeiones peedot obtener clgin sesultado aigniicatve in toner que administrar protosoa ¥ manipular acdalos, da modo quo dicho ‘bro ig el construir aus comostnien. Programacién de sistemas 4, Procesos. 5. Sefiales 6. Liamadas a sistema 7. Administracion basica de archives on Linux 8. Administracién avanzada de archivos en Linu 8. Daemons Procesos {La comprensin del modelo de ns procrscs ée Linu resulta esencial para cimprenter ia mayor parte de su comportamiienty a bajo nivel, La nocién de proceso subyace en la mayoria de ins derechos de acceso a archives, ina aefa- les yel control da tareas Este capitulo cubre lee siguientes tomas: + Qué 06 ua proceso * Informaciéa de srocesos + Tdantiteadores de procesos + Croscidn de prosasoa + Supeesida (kiting) de procesas + Mazipulaciéa de proceaps ‘Tides los programas de acto capitulo pueden are encontrados am al sitio Wob etp:/ /waw.mep.com info bajo ai nimero de ISBN 0789792151, Estados do on pase Be lx VY revifoy A wdive tndedle// lia] sched <4 week dipidone dale nt heyn dannpoplndo toe posed dal brn ( Jute] Sre/ lium) 8 rogramacion en Linux CES la aleusn dun ongrama ytrbida ls uaidad bisica de pfogramacién del stima operativo. Un proceso so puade avimilara un pograma en @cieBay ane dels siguientes elementos * El eoniea del programa on eure, quo os el eta cerita de et adil program, + El icrlrio cocoate de aba dal programe + Unsarelivosydiesorios «ls suals eve acco el prosramsa. + Laseradencalr a drecos de sense del progam, eer como v6 dh ds wri propia + La cansidade memoria oe courte da tema anignado pce Los procsos son también la und basen do programacion de Linax. BL ¥erol ueiza procesos para eonirear ol asia tin CPU y a otro recarsos del sistema: Tos procesos on Linux determinan qué programas correrin en la CPU, por cudnto tiempo y con qaé caractoristicas, El fiadas de Sempos del komme dsrtug os tempoe de ecucidn a carga de a CPU, dentine: des cuctas, entre todos loi +808, apropidindose de cada uno de ellos, stuce- sivamente, cuando si cuota de ompo expira, Las cutas de iompo so lo aufictntmonte pequoia come pars qv 8 un sistema que cuenta con un tla preconadon db Ik inprsien do qos rashes process se eatin ajeeutando snk snoanente, Cada proses cotione tex Brea a suficenteinvormaciin sobre alee como para que 0 kerael pucca acivaro y desactivarlo min son neeoear. Coe ‘ues procoaos tienen atributos o earactersticas que ls ideatiiean y definen suconducta. BI kerel tambida guard interaaments uns gras eantidad de tnformaciin acerea de cada proceso y contians una interfae o grupo de ll das s funciones que le permitan obtener diths infermacién, Las secciones + {Buientes analiaan qué es esa informacion y las intoriaces que le yermizen al xeerel obtensela y manipularla Identificadores de procesos Los at Lbasicos de un proceso son su identificador o ID, abreviado PID, ar nents ‘ante el PID eam ©) PPID So eatarespostvosydtites decor. Un PID ientiea a un rove, Inenera univ, 7 pol tanto inacuvoca, Cuando un piesa saa sae yo proces ice qe ha caado an proce hip, Recprcrmenta, el prose us cea grasses devomina rece Dade Sepunde trata la ascondacia da todas oe proces ast aga tins ‘nstanesa, al proceso que ena al PID 1, que sa douossina orocese init El presen init a pST coor ease dna a sael EAE PMERFrnronamionto al sistas, comieast leo daemons y ‘Teruo programas que se deban correr Casttulo 4: Procesos 88 ‘Auoqt os tall eapectone de roses) de trang (oo a coma tadors excden el slanve este iro, os mpartantereclear quo aft we ‘a str padre de todos os demas proceso {as fone ae azmiten que un prover slang PID yma PPID son ‘a cecing muchas tones cus pare a aptnder P9SK.Sicntmen: {5 FOaK us se dn oe Para O Sis marmosets ne se eat Soa etaers“canrne a POS. She oa . ‘Seitvca ct lanertar sens nmgnincterenacen Resor oases ee OND, fos came el Wiadons Te Moro ten aor = SOSIR B acmaminn 39080 os ineetante pos eros en toa ace que ia slice ons acs para ncanar ov in aa seskters seen specs se vorepenan ‘to sista, At tla la rf FOS ostncar sare einer 10 pee ace ‘Dogama na enka queso asco aa cre tn Oo sigur, Imacetete spears se recoralaca ona nut Stone, Fraiverte dois oe 08K <9 sn eatinane gnaraenta seetaas, Mathes engrests waslssh ne Sah, or gi Sdguser 99 entra s POSH =——_—E——— ee Wdentificaciones reales y etectivas dems ug PPTDs, cada pracoto tiene varios otros etribu dds entifcaciin, queso stan enn tabla 4 janto ace ips art eaxeae Cylas Fanciaaes que los retarnan. Para vtilissr ine Funelanes lstadas er is terceca columna de la tabla 4.1 su debe incluir en al e635 eS.» como Eta ncn eon un punters ua cena gue conten cl ob a acne detunre queue enue srsonco paseo NULL a formance ‘Sours Samal pepe on wd. Se psepo es feet pred “etme oh Paes nase (combre) debe ser un punter asa ctdean que enteng nombre econ ssn. eign ena a aaron uns cma deo tra pasawo. El ponte tad lnetractrs passvd gus fie rola ‘penta had una porn de mora asians etdcnmenen que sod $0- teria porla prosima lanada a getprnan de nolo que ds nesenta Gipoer de ents iniorunctn mds efelante st debrd toned ts erin dein estructura antes de amar de uv a stpvaane Ejemplo, ‘Este eiemplo lustra el somportanients tantade get login’ come de gitpw: cot genee = 9) I A A A 68 Programaciin on Linux ctu stan Hoel erat. toate lb fads dude_[pwd-h siseluce einsatesm 5 a st anv ’ rine getlanin rare ti anaes J Ceteeton da ta cont{asety par iMlguneors eats + gteioastcn, rroct goto’) e201 FAURE); ' + Weseagal munoro conta +) sriot-qecay puncvre, 1309p gus}; exten snes) 5 onin sararvo wath teen: rare mst {as sea:encias 2+ reeguardan contra la postilidad de que get login o { etpunan retornen NULL. Sialzuna de las dos funcioaes retornase NULL, error imprimir ur menssie de error y el programa terminark. Primero, © programa utilize getLogin para reeuperar y aehibir«l aombra de aecara del usuerioqve corre al programa. Lego, usa eee nombre para recuperar el ONS ate do a erase y ahi al nombro comploio dl uruaris(laaacenado ‘eral campo GEGDS de /ote/nansweh yer man S passwd part accedera nartsiemacdal — Capiuo 4: Precescs 69 Informacién adicional sabre pracesos ‘Existe. mas informacin sobre los promos, ademas de sencillamente los IDs ie proces, de ustario de grup, ta. “ici ‘Bete y loc samace desjaaustin. None quo se guste fempou de eleca- ‘Bin y to solamente roo. Esto se dats aque ‘aes ralores dstntes de tempo paral srocecs. a saber > * Eldergo normal el qo maria un cronémott) eal tempo eanoeurido, 3+ Eleiempe de CPU de uavarto es lacantidd de emp que el procesa- re Se ‘ds modo usuario no de Reral). —3* El tiempo de CPU de sistema os acantidad de tiempo invertida en la Seana de gs taker (7 (Btn ene made usaroy ade mre ua mies ah CU 9 una Maca ae mw ot 220 Elector puede obtener esta informacioa taciondo una llamada 8 times oge- ‘rusage. Eluso de recursos dal prowssadh, stn wmnbargo, poedo ser abtenide $9- Jamente con una lamada a getrusege, Estos reciroos tienen toc que ver con las estadisticns do acceso ¢ memoria. Esta seccn comenta primera Ia abtencin e informeciin roferida a tempos, y tuag cubre ta utilzacié de recursos, CONsEI0 ¢culda aban Barats, a oe tinos ola de geteuinge, se dene erie pares ‘Simnaria woman sob benzos? auers Cur ho Seinoon {30690 ava ue VAL UNI yc cot cn tang eles, POST. Unto coe. 0b eaten Cie Saou gARDLEA ‘Snsta ales otracirs sna Sesomoc nau comes Se lin 30 Sioa gor cae ce un aces aRSS a 7 Bs ewan fore Lina ri 48 Suvwnitn 22.20) plersats acne ge dilohis recon cages ana 0 vremeos 0 ‘. . La fencsn(tinae Se eacuontra protoipada en jm ein dieas conbcuasibe J ‘ses rotora.el sumo desde cele que hayan tanscurrido dende que Tasenr aren toe ceaae coo Heme de rel. BU en Dabtra a dss eatrutars (en expach en metTiaobufer) que respode al ‘mS (ver “L)y que almacena los tiempos cel proees0 en ejecs- EIGtkS eS ‘valor retaraado. Ejompio Elsifulente programs otlice la Auniér 5y8zen para enutarsin- comands ex ouestiGn), y luegollama s tLaeS para obtense lain ‘ormacion devead 70 Programacién on Linx ae * eii seewsentis —obtsene shames do prueba y tstsmnein 3 ar mI vee tet peanut five we it vemos / tare” pst? fecal, na usa ¢ entenat + teaetuciazoontonas); ‘ome 3 UNEE para by $e radirigu afin ae/ariar gue ia gantatin ve atinenre syscentrep 2 tuarisoe* » (deriut 2» savin Fa + capsid tinal); REE nomics = tohal = une > calcula sigues( ‘Tiana trateeuerdo*, ries iaunieos); uta(*Taioos de orecose padre"): falcata sepudes("\tuse oe OY por usu oul segnac5("\8R0 oh OU por ststem so? erates uti) te Porat stan) purs(*Tampos de precase nije): falcularsequdes(‘\nuse de GU por usuaria®, t= Firat evtine; Calcubar sequies("\tise ce OAU por sistem, tic Firat esting) exit (@er sucess): ileal sequcoa(char “cadend, clot 210s Lisunidas) 177 opcarge 128 96 rotojsemine aug thes par aep + scant 30 UE TOR pss sor Ne at min xn (tis Gapitue 4: Procesos 72 ‘Ba an sistema, ina corrida do prucba del programa ereé la siguiente salida! 5-1 weil necwrscst Teen tranacrriaa: 19.67 mained Taowpet Ge procens pare Tes Ge 2 por sesiris: 9.08 sapsnene Ge ee PU oe sistem: 2.88 vapress ewpes ot proceso 81p2 vo 2.38 segreos oe ot 18 sagas La primer cieetisn a sserrar or qu ne pares haber edponen eles pave Aus ts ote eeeahic Seecantee proses” oe ape ns hdalaia ot ete ce Sica io geet oui we gst coreteal pograna lant els fey specens slate sa proses hp) fo er tion, voal pin gua ‘eats tna a aren acta el espe de CPU Tn smpunda cherracfa dig de msocda os que el empe invade nero rss, 1991 segundos ace igsal sla Sunde oe iengos de CPU da ‘Sty satan 54sec ened ce sprere dicai ues operate 9 sinbmache mare caro do BAS Que de CP Taro que eur 30 ann dawns mas de 10 me question. Low 16 a¢ a rr ot dread nr iil spat, a ‘Semposseran errs bpalote (ol a= ‘laisteta so in), de modo que para quo resulte Stl se deben efeetuar dos utlizar su diferencia. sto da como resultado el tiempo transeurnid, ode rela), utik_recursos 1 logra sta almacenando los sumeros de tics de relo ecrrespondienies al comionz0 yal final del proceso en tic_con.enzo y t1>_tinal, respectivamente. Los strpos carepondinie alpacas so fomades dol esructare 88 ‘lefinide on al excabseade . La estructurs tms almaceaa el tiempo earriente de CPU utlizado por ua proceso y sus descendientes, Esta dednids asi: strat os ( Ps por sista 17 Thay se s80 a GU cel orocse piore + (atuser)/ cooper 1 Heer te aecee sane ore EEE SRA 07 To ou 2 proce nie > Hane de sto 40 statin ab tne pecs nijoe Lnsisc, esos valores gon tes de relyj, noel aimero de segundus, Conviere sus argueaias on VAreS Ga es de sstecia u peor Programacin en Linux ‘esc temp de sieencién, S0_CLK_TOK ditersimente,_SESUNCOE Tres -FELOA) s:un mart que dalingcushnstics'de ces hay por sequncs ran stem determiada, Syscen?retorna ceo valor coma una variable de to Tora, vel programa latlina para cleular cudntos sopandiee co rogers, ‘an para corer ol grossa, El vendadoracabaLive de battle Go cate ome ‘as la funcdn calcutar segundos. Acepea uae cadane yaa talon ae a [po clock_t en ests caso, 7Taagocaleune imprime la iforsacén de Eerpas eorrespondientss coda part del posse. UTIUZACION DE RecURSOS empleo de recursos par parte de un proceaa rooresenta és que selamiea- fetemne he considarar tambis li que produce el pro- ‘280 en la memoria: chmo veh estructurada lu momoria, os upea de acseeo cle memoria que efictia ol procese la castidad y tipo de B/S que lleva «cabo la cantidad ¢e activided de rad, on caro de exiesr, quo genora. Bl kernel registra toda esta infarmasién, 7 muchs ends todavia, para cede process, Por lo mozos,tisne la eapacidad nacaearia pura hacerlo, La esteuctur es sta informaciin so denomina rucage per rexurce wage) ¥ 2518 ‘nel arshive de scabies “aye /resousee-fe, Este earivturs ‘2st dafiica como sigue serves evsege ( (7 tamp> oa usuario enetet +) J eango co stems oaoieo +) 17% macszo tanto eststecico oars cesicenten + 1+ tana ae earoria comartisa */ 1 tana eo daton no conpasiden 1 ufo co 9a 90 comer 1+ restos de paginas “1 J faldas on pagina +) 1 pormtacso ng ra eoteck 1 peracieras os at ev ateque =) tong ru snieek, > operazienas 69 sai:e8 en ologie*/ vides ang esse seeing +) [un extructura timeval, a su vez, responde al siguiente medelo: strvet eal ( ag ev sets 1 sesvas +) org ase 1 ant micvosiconds +) Linus, lamentsblemente, silo efectda segulmiente de ls recursos listedos sala table 42, Capitule #: Proeesos 73 (Yetta 4:2. Recut de sistema sobre (es que Linux mantiane seguimi Eecurso Deserivein | rusting Teme imerigo encitande ccs ea modo uevaro eNeme) rusting Tameo imerigo jetta steep 4 terol (reuernientes er bate de seige ae Usuaro pr servi ea satan mere de falas varores (acceso 2e memena qe f0 gare Numero de fats mpertanes \aceasas de memoria qoe gk en coors 8 dts) ru_pawap Iamero ce paginas ce marr ledes desde deco debicn es eporames (Como lo indica Ta tabla §.2, exit es y las importantes. Las nos da falas de memoria: ns meno: H gecores Conan gat cuando el CPi dobe a pal (RAN), Esto tio de fala ocarve porque ef <> ‘igo oloe dates quo necesita ia CPU nn oxtda en sus registro cache. Las (elles ports spare cuando an proc db a dso Gua ico paraur el os dat Se sniuenran an la RANC Fi sBiembro rU_nswap de ia estrursura dmacena el mimo de péghaas de me- ‘por.a que si daben ler desde diso como resulta de fllas importantes, Bara obtener esta inforraacida se dake stiliar ia llamada getruaage, do. clarada oo <57/resources. Re. Los niembros ruutine y ru. atime do Ia estructura almacenaa el tinmpo da CPU de asuari y sistema que acum Tiel proces, La tinea informacion nueva que gotrusegele brings al progeny rmadbor a el nmaro ds falas de morsona y de acceso de diac telaciousloa can falas de memoria Adiferencia don Bicién S4ne9, gateusaye debe ser inwoca dos vee at-a- quae én tania sole el proce 'pasdre-como sobre ol hijo. El proiotipe ds gatrusage evel siguiente se getangetin aes Hint vege sate) utago eeu puntero a una estructura de tipo cusage dando a fuscia vuelea 'ainformacite. El pactmetro who (quien datermina ue utlizacones de ecu on son revonacdan, si ln del proceso que eftetus it Uanada o Sas de sug deacon denies quien pune ser solamente gua. a RUSAGE SELF 0 AUSAGE CHIL OREN. getrusage retarna Ost todo sale ben, 9-1 s oeurealgua err Elempio Ente programa os una seguads versicn del ejemplo anterior, te eval utiliea getrusage on fagar do timer, El munoty_see que aparece ane listado per- tenece 4 In estructura de petrin timeval (pag. 72) la cual esa su ver pare ‘ntegrante dla ge. henoze 49 Tnaretceauagz.e | retursoe.c ~ Obeiane tiemos da groctse utilization ee recurs iat ‘Fiselece eysieines:t» 74 Programacion on Linas eelute eeysieesures ts i salle strrociemie*}) vor cvteulersagunas(char sal struct rag cacurson stittzndey roca extern to corntstayn on te eato grin» clo Rapular orssion int; cannay de I gare besr ratiane de autos © se lt MEL oF or 19 a palatra jee dt4co (on wate diene a Tia ae oviear qu an sa syste ate a1 Jusr/see i" > feermuld > promis): 1 coceae ta astrictare dh racursye gurn akaraceto aura +/ i (ontrvagnt Rube SEL, Arcurton stLe9ee)) = 1) crequndas("\9U per umarlo", recurs ut:Lszame.rastme. tye): eoundos|"\I2PU ger antene”, rocursas_utL}iaene.r. tio. 82); "Esraeistieas 42 mnaria da groeoto dre fon spine) sunden(eFallat minerot, eoraraoe_veitsedehustet); gundos("eFolkasapertante, roDursos uRitszcoa ry 8) fith5 caloularsequrdos("\termtselones oo apenas", recusepvtis28005.1 axl /* oocener La estratira de cvcurses sara sl proceso 0419 (en sepusn) +) 4 (getrvsee| UAAEE_SHLDAEW, SrocursosuiLizegs)) #9 -1) saline _sreerranteisie): sai Tame de pent ni) lular sputoos(*\tPU per sistena", racarses_utlisms.ry_utine. st - suts(‘Estanstices de eanocia oil eroens ret) ular saguraoe(*\Ps1:88 menos", eesurage_utaizgse.rs apts Process 78 ? ‘ota calevlar_vqwsces(ctur teatera, tong valor staniao) ‘ he: Alte", calera, valor obtoucn): ' Leonor (oar toate) peerar(excaea); enit(607 FATLRS); Esce programa ejecuta el mismo comando grep que el anterior, Sia embar- fe, ademas do la informacion sobre temps, tanhién exhib ol empleo d ‘mersoria, tanto del proceso padre como el proce hij. Vas corrida del mis- ‘mo gener} la siguiente aalida: $5) sul recor por sistaca: © FAURE cysctsricss 2 sears ost pecans pas Fellas aesoress 18 Fecwuncionts 26 payin: @ Tees oe procens niyo (e2 saunas) (Fu par esuaria: 2 covectatises ce aeocss sel grotass gaara hab HO as sapertacat: 21812 ‘Tal eopoto dja en tarot said de aia coma Ue muss sor Eerpos gus geze i proceso De neco, sl admmero de fx rieta orem lan apreciscon 76 Proganasion en Lnux Casitule 4: Procesos. 77 15 anterioes ecerea de ln cantidad de B/S de disco que requiere el progra- ‘a. El proneso [eyo dese el disco 21.412 veces porque ls detns requeridos a0 #eencoatraban en memoria, No ocurieron permutacones ce paginas, sin embarg. Sesiones y grupos ¢e procosos ‘Exim situaciones em las cuales elsencille modela padrolaio aadesccibe site Consideremes, pos gempio, una ‘yentana xtern abierta Supongames también que se ejicutan on la xtara ‘es comands de UNLVLinax de manera individual: 1s (similar a dir de ‘DOS) cat (similar a type de DOS), y vi (an eter do texto) (Cusl es el proceso padre: a xterm ola interfaz que corre en la xtera? Obviamente, los tres comands estan reloconades entre sf, pero no esmo padre e hijo, En «ambo, son todos parte dela misma sesin, tro ejemplo s el conjunto de comandos ejeutos en na pipeline, tl come per emo ls -1 | sort | more, Denvevo, estas mands estin reaconados nie sno cori pare ship sine como miembros del misma grpo de promos La figura 41 dustra ls elacones ene proceses, sesiones gr da proconos Figura 4.1, Procens,sesionen y grupos de prosesos. Gnuros o mrosesos pial rasan o ua seein wainie gee oerer una sete de comandos en una pipeline. Todos is probes inclaidos en tn sTupo de procesos tenen st mismo UD de grupo de proceso, «208 sl PGTD. E] roa im groped rocema en ac ead cont de tareas Suponge ‘nos, or ejemplo, que el lestor enesese I ppeline a2eweR@ co pipes deco rnandss 15-1 /usr/inelude | sort} we. -1.S, mientras esa pipe fst xan en eeuetn, uno i akoria (ulaaade Cer6C), la snoring deve peder termina todes ins process. Es action la llva.a cabo abortandodicectamnents 1 grupo de poesses en lugar de hacerlo con cada proceso individ. Sesiones Ua sestncongan da uma. rope de prensa de es Cpe Ge ren Ssin Bos Cate adobe erties decoy Des enerineniea esi. Las tenanes St a ses rapacda ood rapon oe praetor as bas héoar ‘Fara os procesos individuales, Digamos que ol lector ejeeutase l mismo soeteade de pipeline mencionado re- Géa(escetiz ls 2 Jusr/anelude | sort | wc -1 &) ea semundo plam ejecutara olros comandos ea primer plano. Akora, si eins comancos se estu- ‘iesen cerrerdo en una terminal X Window y ze cerrare la ventana del termi: sal misntras las misma: setuviscon ata coriondo, ol Were! Ie caviaeia una seial al prooeso que teze a su cargo el contol (el liGerde sesifn), el oval as “wer mats a cada erupo de proceso somase lo deseribié en el parderafo anterior Z {La manipulaciéa de grupos de procesos y de sesiones es un tema avanzado ‘que se excuectra era del alcanoe de este Kbro. Resulta imporiaate, sia em- ‘bargo, comprender los couceptos y la trmicologia empleados pa ralsios ienea importantes repercusiones pars las senales, que endl capttulo 5, “Senales.” (EE Este pusto asaliza la creacd de procisce nuevos la eliminacicn (kiting) de Frocesos existentes ja espera y supervsida de proveros. Las llamada System, fork y exec crean nuevos procesos, Para liqudar otras proceson span eager ROENGET ina 7 ln proceso puads ya sow-oxit (Galirio abot boron para proeier aligadarse a s{ mismo prc oa recooeututiy grata cin Ge vecioos fueron que lor proves padres aguarden basta que termizen sus jos, Bate raquerimiento es imple- estado por las diverses funclones watt. Creacién de procesos Los programactores necesitan a menuco crear nucwos proetsos desde dentro de sus programas. Per gemplo, supongamos que usted crease un programa |gue administre una bage de dains de ttulos de CD-ROMs. En lugor de tener {que crear sx propia rutina de ordenarionta,preferita quo el trabajo lo rea sara el programa sort. Linus ofrece tres maneras de logear esto, La fa- ‘mada a System, provista por la biblioteca C estandar, es uno de los métodos, Las lamadas a fork y 2xec, sin embargo, constituyoa al “astile Linux’. Es ‘a seecién analiza las tres Uamadas, unuzacibn o¢ system La funcien systea ejecata un comando de intarfaz que se le transfiere. Sa prototipa, deciarado en , at system eecuta ol omenda de intarfas string tranairiéndoselo a /bin sh ftrnande despa haber termini de aarutare dc comands ‘Bjemplos anteriores ya haa demostrady ol usode la misma. Spor alguna cidian 127, Stoai- razéa, systen eo lograra invocar /Di0/ sh, retoma el rere ig alin otra tipe deertor Sst retornaria 1 Bl valor nor- ig retornd de sy3tomt eet cOtizo te cal rend transferido en ‘string. Si string fuese MULL, system retornaria 0 si /Oin/ sh ae encon- ‘nase disponible o un valor distinto de sero en caso eontraro. 8 Programacin en Linux ig pwruzo 0 fork ‘Mamade a fork erea ua proseso auava. Bate pruceso avevo, 9 proceso ie ser uns copia del proceso que eftctud la llamada, 0 proceso pare. La [nslea fork es declarada en j su simaxis es pus.t tore: ila Mamas tone Gta, frie robomael PID dal posse hij ol zeosse eas Olu, Engin qr Bn rte mara oP ‘ee hiaes lnmioma eco cia vac ELsueve psn guess for na copih ea el pve pd on Peeastib ef, Fr realize unt copie exmpleta del proceso pa- Enclave oe UIDs y Gibs reales y feet 7 In (Ds co grupo de po- eso y de sain ol enantio mst de les rote, archivos aheroe Sefnienos de manana compara, Las difarucean anit los procs pad «hijo sen esas, E] proceso hijo fo hore ay alarmas programadas enol prooes pare eles median- trans laminin a 21078, os loquso de archives erendon po proses pe yas nein ponents, EL eoneept clave qe debe sr eomprontido ox que for cea un atv procos que os un dupleuco wets dl proces pa esa oxceriin d oindlesde, Ejemplo 3 que sion an gop sn detomplen de forte 5 1 miro ae aroaran on treengs end“) . mace ~ ples sanciito un to nseluse urine n> festa wc ‘os se soe mao p puso f54 Ufo = forkta} = 1) ( rar|“for) seit AL); 1 stae rtentid = 8) ( uteén a4 prcesa sje"); prict|*\rais =f, gstpia 5 rant *\epaa « tint, get cI 0285815 yatse is Stee ig ‘capraso a: ta" i proses entre"); srinte( tid = tot, soti0t))2 prenit(\cooid » ale", atari}: Lada de este programs sd smlar ola siete 5 Beh pep ok prees ig al nie + 18 De an sere ied? he soie tet pare off>> » ‘Como se puede apreciac a partic dela sala, ot PPID dal proceso hie (ol Gai proceso pda) ov elmira quo ePID de padre, 114, Lava ar ‘és ustra una cuestion ertica refereate nla uilisacién de fork nase ‘puede predacirs_un proceso padre se ejscutarh antes o derpué de 2 je Esto puede inferiee a partir de Is oxtrana apicioncia dele slide. La psi 1 linea de ditha silida proviene de! proceso padre, las Krneas desde ln - (punds hasta In cuarta provienon del proceso ij, y la quintay sexta ness fFrovienen auevameate del proceso padre. El programa se ha ejecutado fuera fe secuencia; as dei, exincréniccmente, La nsturalezs ooincraa de a sndueta de fork sgniica que 20 dsbor ssecutar eidigo perteneciente al proceso hijo que depend dela ejecucién de ‘Saign del proceso padre, ni viceversa, Hacerls ast crea potencialmence une ‘ondisién de competencia race cndition) que tens lugar cuando varice Srocesos quisros utlirar un recurso compartido pero dicha acciin depend? [Tolordea em al cual s sjecutan los mismos. Las condiciones decompetenci duster ser difcusdoloualane por ol ign que las era fimeoea ‘Bayer pate del tiempo” Renuta dll preci los resultados que era ‘and condicica Ge competcncia, pero ous tintonas pusden inclu el empor {amiento impredecble del programs, un aparente congslamicato del site tba, respuasta lenta de un ssteia por lo demés poco cargeds,« drestamen tela caida del sistema. naam «fort pote eco srg ay demas pee Sea aad eet ile ers egal roman reat See domeniiaas aces staer aioe [Bees dee toca, fon ween toupee eal mo ‘res ningin proceso hyo. 80 Prograracién en inex. Nova 5 poeeso ge aftr n Fark mtu copiadode tes agente mere o Souase nantes recso io. sta aan xonoen no pst natraeza Ge moos ae oe ‘Ssetavares ce UND crear larads vr at amaze tamase Seas eoeese fine, poo ce ae ane pia de poUeeD pane enn WEE Resale hae Gece okt mune paceto creat eepacsde areccones de aso goa. S ‘andes cersen co smarts uso ow soe te, Sona posse fo names 5 eoida oozes ha, Ea caretesten se maminncopincaoomm ecesre La raze carnal oma onnensa de vfork es aslerr ia tesein Se aocasos ‘unos. AGurss, fork cosa a carcterGica alana ce torsticycyeel ross hie se set artes cue trocasa pdr, oor tao imioane Ie posed ce Siaconacen ce conpstenc, sae Lnux am enter, /forkes spear ina tu o> taro de far, pore Urux slmpe te seaeo a Peau Os Sr 4h furart wtura La arcu Linn por tnt, ca tn ss ce In Yon se Luca, ceo an cambio ia for ge Ln. como ee sinsemarte ur sce ce "PH ne Dacia gravtcarave el procesa fest ecu ates ques aoees Pade unuzecibw o€ exec {La fancién axa oon realidad un familinde.ceigfunsiones, en la que ca sutit dT sistas oehfbe eavencionce do Ilamade y empleo lovemnonte dite. rentarA pea da ly multilisad de Funrionas, lao misiaas sya eonocicas convescionalmente an blogue como “In funcién eee”, Lo misino que Fo-k, ker eat dociarada en , Los prototpes eon les sigateates, re eet onst ear “path one oh rt ects cent shar 4418, cont ghar i nt astcaleonst char spat, gonst ctor arg, char eanet mp); ne auteranene har a tvecont ‘ost star ryote nar aun, chur vsenge aN ]}; exec momplaza completamente la imagen dol proceso que efeetus la llama dda con la del programa inicindo por exec. En tanto que fork erea un proce- se auevo, por ld tanta yenera una nueva PID, exec inida un nuevo pro. {grama que reemplaza al proceso original, Por lo tanto, la PID de un proceso {niciado mediante exec ao varia, .ov8 acepta tres arguraentor: Bath, argy y enue. a iv bina eJorutableo al aerpe que se deseo jeeutar a°9¥ 02 | lista comets de ergumentos quo selo dees transterral programa, inclo syendo arov(0), que ha sido teadivionsimence el nombre dal programa a ser e- utado env es un puntero a un entirno sepecalizada siloihubisrs, parse programa que debe iniiar exes (iae MULL en el programa do mucctea) Ejempio Mostrames que, @xecve so.uiliza para sjeoutar un coraaado 1s en el dives eicies + Hasta ob eepaa ae aniove ‘ ear e3s{ ety MALY enscval ibis", ange, MLL) ‘Una corrida de prucbs de este programs (roenrdamor que a teat do un tie ‘ado de directric) gener ta siguiente ald (los nombres do Toa archivos co- rrespordan a lox presentas en Ia pdgina de este ibro ox Laternot uveriteenicwe getmanee —orprian.e —ranusede enslae amtevecedes.e cana) Come 50 esta sida _pusdeapreciar de esta salicia, la senteacia puts no se gjecuts, {Por iad tecbu? Sl exec ene Elle, to regresa auaca al presioaupin lane y por lo tanto las Ultima Gos TGUN'We este programa Jamis oe canes: Bais Liemdaics pews Cmsows opm area, teas eon ‘efign conf petn utters Xai suo pga, cesta feet RE. Suevicciel Guust aca onus Tie eeer ieee fmoma‘Le uaa neeaule goedarenn Eivas ances Se ae Soe nto or Sin altaime centr ee ee ae Saupe e eee exe0 &N DETALE Dada la confuse simiitud entre las seis fanciones dela familia exec, se ofte- 2. coatinusciin un analisis completo co su sintaxis, comportamient, simi lirudes y diferencias, Cuatro delas funciones execl, exeev, exes, y execve-aceptan mutas de acceso como priser arguments. 2xeclp y exscvp aeegtan aombres de archiva y, i estos no contienes la barra oblicua, imitarsh la condueta da la {nteriae y eecurriria a SPATH para loclizar el archivo biaarloa sjerutac, 32 Programacién on Liewe Las tt funciones que contisnen una ] coperan una lista de argumentoa se parades per comaas, terminada per ua puntere NULL, que serd traasferids al programa que ajecucard exec. Las funcioues que contieuen una ¥ ea sa nombre, sin embargo, edmiten ua vector osea, un arregio de punteros aca enas terminadas en \@ (ce70 dinar). El arreglo debe estar terminado con ‘an puntero NULL. Por ejemplo, supongamos que ul lector desee exec el co- mando !bin/cat /etc/passwd. /etc/ group. Utilizandn ana de las fun- ‘iones | simplemente deters transferin cada uno de estas valores como wa argumenta, tarminando la Iista con NULL, como se ilusten a continue Si profiere wtilicar una de Lan funcionesv, sin embargo, primero debert cons- trina rreplo argy array, y nego teanaferie ese arrogio ais funeién exec Su eéigo seria similar al siguiente: cha “arpeth = (event, “eceypanina “/aceigoug, LL}; ao" aeeveae", wg) Fiealment, laa de fareionen que trmainan ene -exscve y exeels-te permite « ino crear ua entorno eapedalizade para el programa a ser ejocus ‘ago por exe, La ubicacién de ese entorna se almacena en envp, qué es tax bien un puntero a un arreploterminado en \@ de cadenas terminus en \@. Cada cadena tiene Ia forma de par nombre=valor, donde nombre ose! nombre de una varigble de eatorno y valor os su respestvo valor Por ejemplo, far sano] “FATNsO4n2suserbin", "URAKTONIUSA Perae, LL) En este ejemplo, PATH y USUARLO aon los nombres y ‘bin: /ust (bin y duan Perez son os valores. Las otras antes funsionos eetbon sue ontornns de mansien implicit a tea és de una variable global donominada environ que contiono la dirsceiéa de un arrogl de eadenas qua contienen el entoraoidel prom que efectus Mameda Para manipularel encore que heredan estes Canciones, wdice las a funciones putenvy gateny, decaradas en y Las prutatips de estas fanic+ nes ton (os siguientes: anit int esti Le aeknigpies a8, Ux “atu, Lae eprom) Sil purdmeten status almacena te process hil “es 8 PLD cel proceso pos al cust se quiere aguardar. La misma puede adop- tar uso de cuatro valores, istades en la tabla 43. Tabla 4.3. Valores oosibies de cid Valor Daserinclia oa ‘guatdor aor cuslaulsrproeaa Ro eure POD sea iguall valor ‘bas! PIO 1 2guatdar oor evaewer proves ° ‘Auacdar sor culeuer process cuye PIO oes quel ela ce (roveso cue efecto a lamace >a guards por al proce ip ce PIO sesiguala cid Captule pgiang eee cmos abers compertar ia Tamas nad. Pde set qe hase que saitid sotere inmedintamente si aingin process hi+ “je BSterminads, MINTRAGED, que cignifisa que deberd cetornar a coodisiga de lo proceotshijoscuyo eetatus no ha so informado,o se pueds eectuar con sunbos pardimetros un O logic para dblener ambus condurtas al mist hempe (cade: pray moran MINTHACED coma arguments de opt sors) Ejemplo ser apap a meg + Eeles seectio a8 east > agaraar Peetude anit. te eati3.m> sews orto 86 Programacién en Linx ‘Wea corva de pracba de este programa produja la siguiente salide: pid @ areeia naa = eid ds arora hija = «60! fo arene oaer bid 6 9recso onare = «58% EL prnise hijo retora @ Este programa os sinilar al anterior hi jo.c, excepto quo aftuds una senten: ciawaitpid. Espeefieamente agaarda por of proceso io wspeeieadn por hijo para otornas y también exhibw la eondiesSn de salica del mismo. Obsér vyese que las salidas de fs procaeos pudre whi no ostin entremezcladas eo- mmo steers proceso padre se detiona hasta que mh jo.6. La ajecucién del falc ol paces i. wa pid iy walt returna ia PD del proceso que Owe especies VNOWANG en OPE LONS,o-L wi ocurn wt + Su funcidn main lama areturn + Lamm «oxi 4 + tama a exit + tama abort + Safinalnade por nna sol ‘Las primeras tres razones constituyen terminacio {imas terminacozes anormales. Independientemente de por qué razén fina- liza un proceso, sin embargo, se ejecuta finalmente el mismo codigo de ker- nel, queciera archivos abierias, libera recursos de memoria y lleva a cabo ‘outlquier otra tarea delimpieza que sea requerida, Como esie libro supone ‘que sus lectores poseen conccimienton de C, ennsiderarnos que is funcion Facurn no necesita de mayores explicacones Las FUNCIONES @xit ‘Yasehe voto utilizar Ie funoién axt (salidal, que es parte dele biblicteca sstindae do C, on dirorses programaa a lo largo de cere capitulo. En lugar fe sumiaistrar otto ejemplo, staremcs su protetpo, tal crm est declarads en sstolib he int saiclioe statue; saiWae gw ah seminde aoeaial Se avoeiata reiecaa Stata proceto pars. Sa sjecutan on esa oeasién todas (ae fonciones quo o hallen fogistradas con ataes (cle sada % capitulo d: Presses 87 a fancidn ext, que esti daclamada on . termina inmad mente el proceso que Ia lame. Ea este caso nose ejecutan las fmaciones que ‘se encuentran registradas con atext. ‘umiuzacion pe abort ‘Usilice la funcién abort sige ve en la necesidad de terminar an programa: snormalmeats, Bajo Linux, abort tiene el efecto adicional de hacer que un programs vuclque Ia memoris, que la mayoriade los depuradares atilizan pare analisar el astado do un programs eanads dato se bloqued. Aunque pro- (ede acerrar jodos los archivos abjortoy, abort ee una lamada “duea" y ds. ‘erla ser empleada silo como dltime revure, tal como por ejemplo, cuando ¢l programa encuentra que no estén condiciaes de adminiairar, como una agua falta de memoria. avort es también una fancion inctuids en la bibio t4ea estdndar (declarada en ¢Std149.N>), Suprotetigo os: sertest) Elemplo El-siguiente programa musatra el compartaminnto dea funclin abort: Fpomare oth roirana en ier + worare eepetuse endl. Derustra ‘ +1 program ro detain Uezar shut +) eT S085) {a alia de ere roruma sera nosis Observe que su sstems tel verao genere an vutico de memoris (ore Gump). Sigolohisiera, wilie el comsndo deinteraz ulinit tal como se ‘muestra ea le nueve corrda siguiente, El archivo conde se vuelea la memo- ‘a resulta Gtl quando se depura un programs. rors (core ses) 38° Progamacién en Unux 1 Fae maj iftrmacysobm dpuraion con un sete de oat ane. ve“ lode gdh," nigna 428. ‘MPLeo 9€ LA FUNCION KELL Les dee paragratne antertores se concentraton of la sianers en gus un pro+ ces puede eliminerse ast mismo. ,Cémo, ealences, puede un proves dar termina coro? Utlizande la funciga kt11,cuyo protetipa esel que sigue: veallote.t pus, im sigh: Para.utilizarl, el lector debera lncluir ent cdg fuente de su programa tan- 1p «sys /types 1» como «Signal n>. Ei parématra pid especificael proceso .quese desea eliminar y sig es a sehal que se deses enviar pars ello. Como 22- ‘pare eubre la oliminaciinde un proces, y no trata sobre sefiales, la tinica sil que onosideraremos por el momento es SIGKTLL. El capitulo 5 amplia el teataaicato de las setalea. Por ahora, silo dé le siguiente por certo Elemato Est prograron mnusotra céme climinar un proves 1 sone ge proses om torn dintrarsrece.c » ELltnacton se otros argc edie «sy ype.» neki coy at > ie etl ine euvett) ‘ ese tan, vor Arima = fore 8 ers rere fut 07 FAIRE): (mo = 9) 4 ‘> Gyarte activo Jo sursvente con gars pager etsninrio +) ‘7 U:atinir WOOWE Fara hacer ratoran a wit ineadsatnente +) Cantulst: Procesoe re MIAN) we @) 4 . KEE(nje, SoG) Wf pale al nnd 22 Le pete ell sresaaio")e peractsti"): etsig(tsts, devnaicuon 9)s yee f Oiler aero de 1 Suess) 1a salida de este programa doberia ser similar la siguiente 5 Inline sees ‘Lego de verificar que la funcion Tork haya cumpliso con sx comet, el pro eso hijo “dormira” durante 1,000 segundos Iuogo saldrs. El proceso pad, oper waza Arp us aad eet eg lun * 8, n cso conga fetoraara 0, $411 lreasa, ol procoe pale Tamia a wal 1d uti sand ‘eg, aungurddese quo la ejecucion au catangn hasta que el preeso hip ali te Ex cao centro prseao padre exhib un menane Ge eo Halizn ‘LL seublise habtcalmente pra trminar un prego o grupo de process, yer puede er emplaads tambien pars enviar cuniquiersetala an progtee 9 ‘rupode proceaos El capital 5 eubre by rnfrente soils ex date, ET Qué situaciones reqsleren el empleo de tas manipalaciones de procesds vis- tas en este capfiuls? Uns de elias yx ha sido menconada: cuanto uno quie- eo necesita atlizar las prestaciotes de un programs externo en su propio sidige. Supongamos que el lector esié ceazdo un (otro mas) administrador de archivos. Aunque seria ideal redectar au propia implementacion del pra- rama Ls, seria mucho ms repido en terminos de tiempo de dasarrollo uti {zar el comande 1s existente y concersrar sus esfuerzos de progrumacion ea vtlizar ip salids de 25 en su programs. ‘Si uno cree nuevos prosesos utlizande Fork o exec, resulta vital aprovo. ‘char sis eidigos de salide aslizande una de las fancionss wait para mate. ‘nerun sistema qus funcione sia fiuras. De modo similar, l lctor deberfa Siempre ssezurerse que sus programas llamen a retur® oa exit antes da Stlir de modo qus [os dems prgvanes pueden meager las eieessgondiontae 20 Programacisn en Lnsx csdigos de caida. Ln cussti6a a2 que una administracién eesponaable de pro- ‘cosot avcasite wilizar algunas delay teniena comentadas on este eapitul, Finalmente, s medida que ol lostor vaya desarrollando programas, ya sea ‘para au emp eo personal o para tercercs, inevitablemente encontrard proble- ‘as. Una de las mejores barramientas para resolver prdblemas de cédigo es ol archivo ée voleado de meroria, Ia imagen de un programa en ejecuciin «que se eseribe a disco. Por lo tata, si uno puede cizcuaseribir un problema 4tmna sesciin espocifia de su programa, ol emploo juiccso de abo~t gene Tard un archivo da velcade de memoria que pusda sor empleado para a de- ppuracién del mismo (la depuracién so cubro en ol caps 20, "Un oelkit de . Las soles aparecea en muchas situaciones. Una excepciin de hardware, talcomo una referegcia iegal a la memoria, renera uns eedal, También ge- sora una sefal (SEGPIPE) una excepcéén de software: por ejemplo, tratar de escribir a a pipe cuando el mismo no dispone de letores (proceso qu 96 bneuenteon presaates del ate lado del conduct). La fanein i (matsr) que 0 comenta an el capitulo, *Procesos”, envfa una sedal al proceso a ser ma ‘ado finalizda), io mismo que le hace el comando kil. Finalmente, las ac ‘nes generadas desde nna terminal, come por ejemplo tipesr Ctrl+Z. en el teclado pars suspender e! proceso que se esta ejecutando en primer plano, también generan sedales, 1 Pus naasposcitn soraleta ote bra mei apie, ver “ips de betray adit (a pga 35, Cuando ua sroceso roche unas * Puede ignorsr ipesur por alto) “+ Poeds pemicirque onurrs Ie asin predaterminada ssosieda «In saa + Puede capturay odnierceptar la sedal, lo que hace que we ejecute une Seiclin espedal de cilge, devominads handler (manspaladee) de se- Bal. Beto se deaomina previsaznent> maaipulsr la sea. Este caploule examina cada una de eszas opciones en detalle. ‘hacer con olla une de tres eosaas Torminologia de lag sefiales ‘Se genera una senal deverminada pera un proceso cada vez que courre alin ‘guceso que de lugar 3 esa sefisl, como por ejemplo una axrepmion de hardware ‘Ais inversa se Sloe que una geal es entrogada exando ol proceso al cual écta aside envisia toms accion sobre la misma. Durante el intervale que trenscu ‘re entre le ganerocioa de una sezaly su posterior eatrega, se ia cousidera pea- ‘tents. La eucrega de una seaal se pede bioguear, «sea detorar. La sera 25- ‘ard derorata hasta que sea desbioqueada 0 hasia que e proceso receptar Casto 5:Sefales 95 docda ignoraria La stanara en quo un proceso rasponde # sna sfial se dano- ‘ina digporiién de le sal. Us proceso puede altoraativarente pasar por {5 una eedal, pormitr quo toags lugar su zecén prodeterminada, 0 manipula In, donde eta ulkimo signifies ejecutar on resprestaa ln misma, untrozode ‘hago personalizado, Una neal bloqueeda tambien os coasidorada pendent. Unconjunta de sefaize os un tpode dates deC, sigset_t, definido en , quees capaz de represeatar multiples secaies. Finelmente, la inaseare de seRales dn proceso es ol conjurio de senales cuya entroga el rim ene blequeado ex un momento ado. a y otra ves at lacs 9 ate bro que Lincs aunque hayes disnfadesiguien- do as xpocifcaconse POSIX ha inenrgorada iberalmnse eneuetoriatieas de Ist dos rans principal de su antocnaoren, os UNTK de ATT y BSD. Bsa heroncia (a haceeviderte on las snliales. Lo. que aauro es ue tanto enol UNIX da AT&T ‘oena cael de BSD vena adoptadstabide una APT desi ermpatibla con PO- SEK de mode que las difrensina entre ambus API np rsultan doransiad significa. ‘Svan aiempre y cuando todo et mando earibasucédigo para lx APT compatible ton POSIX per spams) A.ceasnuadion mostrams,loago de un pido rasa {bet desacollo dela APT de sol emo enviag intra y manipula seals, Historia de las sefiales Las seiales han sido parce de UNTX cai donde principio, pero los croedene Gel UNIX les requisié no obqtante un per da intantoe lograr haces funciona Coreciamente. Sin entrar a vonsiderar dollenc todos les detalles intrinendos de Su desarvallo, cn la aparisita ds laa primerasimplementacioney do sodalet ‘hurgierea tes problemaa priaciaales Bl price problema fis que los tanipais: flores de sefal tenlan que volver ar inetalade cada wes quo solos utlizaba, lo que daba lugar a una posible o probable cotisién de competancia. Sie en. ‘Hogabs une segunda seal mientras la pranon: estaba sienéo manipulada, 7 [nics de que se pudiese volver « matalar ol maaipulad de stiles 0 bien ost Segunda seal se perdisoalsemativaments, el proceso pormitin que tuvir® lu- {ge la acelin orginal de la seal, sn ningin proeezamion'o. £El segundo problems ocurrido con las implementaciones initiates de las sea Jes fue que éstas po provelan waa manera sen-ila de suspender temporeria rents un proceso hasta que arihase una send, Como resultado, podia darse {leaso de que == entragaso una sens! « un prvceso 7 este no cayeae en eveata desu arnibo, Fissiment, las lamadas al sistama noe reiniciaban automdti- Saunente coando eran iAtérrampisas por uns seal. Ea cnseaiencia, seis ponis una enorme carga sobre os programadures, Después de cade laroada al Eltema, estos tanian que verifier la Yariable=rrao y reemtir dics Hamada Sal rar cbeenido para erento fusra EZITA. Las implementaciones de seta- les que adolecea de ests defecas se denominsn sesales no cmfishles LsADI de sedislos POSIX que nubis arte capitula as considerada confiable ongec he cubsanade estas initaciones Bajs POSIX, Ins manipuladores de Bene ecisancvoe invualadea, ovten dees antla condiviin de campetsncia y Sur enneruencias posteviores Cierear llamadas al sistema se reinican aut Zeitsamonta aiviando ails tarse dal oregramador. y POSIX tembiga pro- 26 Programacion en Linux ‘Yee ura manera confiable de detener we process hasta se le entrague ‘una seta, eliminando ast el problema do las sedales pendidas Sofiales disporibles ‘La tahia 4.1 arnumera todas tag cofalec gus odmite Linux Table 6:2. Sedieies de Linux Seta___Deser 7 ‘AcciOn predeteminada SIGASET Generacs por andr Proceso temina yarspa ura abort del stare (P05 Imager de 12 maior (core time) STGALEH Una sefal aesporzacors (timer Brocaso termina signal gererseaporlaturcien arn det sistema POSIN SIBBUS —_Eprocosa ath de aar Froceso temina yarabaune ramena mat aineads © ‘imagen de fammemana (cre he) sin alnest (4.2 850) STEGHLD —Unpreceso mio se ma detent gnorata Dtarmiado Posi) SEGGONT Et proceso debe cantar sl estdComoua ignorar si aces m0 cmtemay POS) cath detent) STOENT Error co bus (ara) Procese terinay rapa uns Imagen doa meman core dr) SEGFPE —Exchaddn de punto totame Procaso termina gravaune (rosin snagen oe la memoria (are me) SEGHUP —Frocono eibigun corte deinen Process tomina (eau terminal ce creat 34 prosaao de con mane SEOTLL —comanco logs Procaso wma y wel grabs) ane (osx |magen ge la emeria (ere ume SESINEO Lo mismoqun SICPIR, mpoarta SIGINT Usuare gen una irtarupeién.Procesetaminn ‘3 tid (P94) SEOLO Sa reidE/Sasinrtnica ‘eros (280) STGIOT ror de E/S. geal que STGABRT Proceso temioay wate fazeso) imagen gaia mena cere ume SEGKELL—_Terminar grasa (POSIX) Praceso termina, no sé piace aot olporar SIGLOST Proceso pea ia tava oo Proceso termina seme SIGFTPE Procaso watd doasorbyra un Proceso termina condita sn scores POSH SEGPOLL —Ocurié sucesn encuestable __—_—Procosoterira Sstemav SIGPROF Alana de cortome asanada sabre Proceso termina lun segment de oa expt (2380), Table $4. Sefsles de Linux contiuacién) ‘Sefal 00. ‘Storm Seters nessun acoame Ge suminiova eteuin (Sera ¥) SIGWiT Unariogsner ung sais cesce © teiaco POSH) Steseey Pacesown ce Feerendarmenona SIGSTIELT Process gone une tala Sian eran i aia) ‘Sea oe crt (Psi Argimentoincoreco pasads Procean coun stare Precis 3 un pu do Getarcin Sacarinart Grace una ecuracion ‘e ctign) Po esa goraruna detansicn Gee tociasa OSI) Proceso as 2 er Geode 3644 maneae corn ‘Sapa pine (POS) Proceso intans esenbe 9 Stout merwas coria Sagan pana (PORN) Seta ro usa enact de urgencia onan seenee (42 350), stars stort SIOUSR2 Sate 2antnsa por elusvare (rosa SIGVTALAM sara oe intervie eed fa2850) SIGITNON Ei tamafo ca una ventana teminal sano (62 880, Su) SIOXCPY Preceno aaa scones Setiampo oe CPU cue Bola nw 2859) Captule $:Sefales 97 [accion preeteminada gpa rocaso termina y aba una imagen ea memora core ume) reaver gabe un Imagen ala mans ie um Inecesitie P0Si) Precasatarina ygaba wna Imagen eo meno ice sum) Proceso teria safal determined (FOSK) Pracaso termina y gba una Imagen 2a lnmemara are dura) Oetensi6n oeranien Pecces0 tei lanoesa Preceso vein roses termina wrists Proceso teria j abe ue agence a retars(are Gor connie regramacion on Unwn Tatia 8.3. Senaies de Linus (contiouacin Acciin predetermineds Proceso termina y grata und Traniptlarun archiva mayer imagen des mame (coe cure) {qual lmiza de temano de archivo de sistema (42 880) Como se puods vera past dela tabla 5,1, ls senales que Linux reeonoce sen .una mezcolanza de sevales dorivadas do BSD, de Sistema Vo de ATG? 4 por aupucato, de POSIX. Varia de las aofales Ustad sin ezibacgo, in soetuse ents sestute eurtsta ‘ mye = foxy en aeroeitre) ) tae atasie ee); paw cy 1+ vier una sah gut eee igporade prine¢("erviarea sigzua 3\0", N39) pero taba" arin arms Md ttaia tae, i (rs ace tain a rm mle ale pest nue 4 pose po sto, ML, #5 202 Pregramactén on Unux 3000830) Esta es la sida quese obtione de un par de jecuciones de este programa: Daan EL roca &7 tolvia iste finvinay Ssineane Ertan StH 8 79 EL groran 07 tobvin xiste iniriay 09 ‘La primera cosa que se debe advertir os que, aunque pareeca extras, (312 (eninzlés, matar) ued sor ublizada para snvier soles diferentes (queen ncesaras Pury MIE un procoso (STKILL, SGTERM, S1GQU:T), stunds e neotesd Kije ior, de echo, a SIGCHLD, Finalmonte. dad ave ‘sistema se ereoateabo rolativumante invetvo, pade vilizar ia sefal nua ‘para confirmer gue ol proceso ol que ae le envié In veel todavia exietia, Vo~ ‘icado ost timo, SFGTERU tarminé este proceso hi {a llamada o waitpid, invita, conotityye una medidade seguridad paca o} case do que a neds Ki. no longa éxito, Como oe observé ex l eapitule en terior, au oxi manera da aaber por anticipade aol proceso hijo terminars antes 9 coupua dal procos padre. iol qos termina primera fuera el proce 42 parol rocico fnjoue coavertiia on un huirfano adeptads por Anke, e indt sblondsa a coadiida de salide del mis, 8 era el proceao io a «qs terminate priaar, sin embargo, debe aero prosoen padre quien abtenga 13 condicida do sald pura ovitar quo aquol se convierta en an proceso zero ‘308 coup inarevenriamonto un lugar on la tabla de prooonos del korn Tec eines El sspecco angorroso del envio de setiales lo coastitaye le intarcepeioa y la ‘manipulacion de las misma. Cada prozeso puede decidir como responder 3 {daa ne seeles exepto S165T0"y STGRILL le cules como sevis et sabia 5.1, no pueden ver mi Water 1S Lrmanerd mis sim- ple de intereeptar senales no consiste de Rech en intereeptarlas snoes ‘simplemente esperar a que saan enviadas. La funcion aiarm pone en funcio ‘namienco un temporizador (omer) que envis la seal SIGALAM cusnéo el in- tervslo de tiempo a que fue ajustado este ultimo expira. La funciox pause se ‘omporta de manera similar, exoepta porque le que hacees suspender a ee cuciic de un proceso hasta queel msmo reciba alguna senal. Programacién de una alarma Ta furcidn alarm, cuyo prointipo se encuentra en cunistdb>, active un ‘temporizadoren el procese que efecuta la ameda. Cuando el tempo asig- ‘ado al tempurizador explra, se eavin STGALAM al proceso que eects Ta ls ‘ada y,« menos queesie didi intsreepte la seta, la accidn predetermins- de pare STOALAMlconoiste on dar ina dicho proceso. [Tiewres i+ nena del prograna on toterets os captuio 5: Sefales 103, El protetipo para alara os Unsigned rt slaralrianes 19 secs seconds os al atinera de segundos de raloj doqpuis do los cuales el tempori- Zador expire El valor que setorna cots funcién 360 «i zo s0_ha programado ‘Siaguas at iauans ents & sapundacmatants on une are aero €e sta oa una alae ‘programada previameaie, ai la hubiora. Us preces To a Tretia Establecendo el nsanero do sogundea on 0 9 cancola cualquier Alarma previamente programad, sic Ejomplos (S) 1 Este programa establece una slarma de cinco segundos, desputes de lo B® cultermina oe yn sarcsba Gt sleet’) rogers oo vba taper anak oF for programe Liege aT) {La snide do este programa es !s siguiente: WC gste programs establece una alarme de cinco seguades, observa ai yo she bia exstlecida alguna otra alsrma, y luego quada inartiva durante 30 2- (pind para provesr a la larma de una resseablo cantidad de tiempo para Sipura sistemas arareados puede tranacureis un fiompo adicional entre ln generacion de SIGALAMy su llegada (asaaue no 25 segundos, por supues- a), Guands arriba la sefial STGALAN, eLerna termina. wie Bleek ela deaperadoe lo generé ci kernel, no el programs 212°, Por i) Sommdaie gece cao EA 2 Bets camplo estetlece dos alarmas, lemando a a2arn une tereera vex, Fiwrce pare cancelar la segunda slarma. Programacién en Linux wen cond) : ee nt art soie) ong LE cotton retarn; aanareits)) > 9} butst"¥s 6 ercuanera extandess 1 fatuecer ana nave shanna */ tosis) ‘3tlgp darter = alaen(3) codiga 4 retarne > 8) rane (fentan A wages (> cancotar an sepa ataea +f sew (21; sean nn aaean): a geiera eharayn, 20890 84 sonsdon an Uk saints starmint, areas (rT Fate , [Lasilida de sve programa es la siguiente sun orci 12 seqanase op a primera arnt estan 3 saqudon en 18 tagunes tarne Com ai programa cancels Ia segunda slarmn ates de que ésta vaviera 1a oportusided de expisay al transferitle © como argumento correspondiente & sequadis, el programa ne exhibie el mensaje “Alarn clock" Reiter, en tan sistema muy eargaco, as alarmas pueden armbar mas tarde de lo previs- ‘9, Vaa razoa pura cual uno podrfa Logar a atiizar alarmas es para esta- blecer un liste de tiempo para los programas potendalrente larzos, ialee como los que deben clasifear un archivo may largo o esperar que un uesario ee % ® Coptues:Sefalee 405 resporda un mensaje. Ls mayoria de loe grogrames qué sslablecsn alae sas tambien las interceptan, on Ingarde permatinlae tarminar el proceso. Utilizacién de ta funeién pause {is fanciin pause suxpende el proceso que la Tama hesta que arribe alguna, ‘sei. El proceso que eftctta la llamaca debe de estar en eondidones de ria- hipular ia sedal que recbe, © er caso ontraric tencré lugar la accin predo ‘erminada dels misma, g2use se encusntra prototipada ea st pauselvoigh; [pause retorn al proceso que Ia aun silo si el proceso intercepta una sada Sile sefel que se ocibeinvoca un hanler, ese ve efecutara antes de que pause retome. pause siempre retorna 1 y wslgna aera al valor EINTR, Ejomplo Este sencilla programa s6loespora el arriba de tuna sedi y luego fnalit. 1 Nsee dot segeann on tvernd® pause 7S) ‘ onsei: sucess) , La salida de este programa esl sipase 5 tesuse En li primers corrids, pause solo predace una suspensicn indefinida, Pri- ro, CtrisZ (ingresada desde et teclado), susponde el programa el coman- do fg lo vueive # traer al pnmer piano, para que entonees Ctr'=) (SIGQUIT) 106 Programacion en Linux Io climine yoensiona un zuelen de memoria. $i no slo hskiosa oliminaéo, ‘mubiora continuads en pauss hasta que recbiere otra seal ohasta que of Durante a seyunds corside, el programa coruiéen una ventana. Su PID oe ‘avo ea une segunda ventana por medio de ps, y Iuqgo secmito k111 -USRY 10>. Come no se establecio un handler ce sel para la snl SIGUSA}, ésta eve cabo su astién predeterminada de terminacion, Definicion de un handler de senales Be algunoe essns al enmportamients deseado de la seal es jastamente se sseisn pradarerminada. Ba otras, probabjoronte lo mayoria de las veces, 20 ‘degen madifisar eo comportamivato, o evar a eabo tarens agisionales. Ea textes 2as0g e debe defini einstalar un handler personalizado de setal que ‘Bodiique ol comportariento predeterminalo Consiterema et caso de un proceso padre que engendra varios promses bij. Cuando los prcesos hijos erminan, ol priceso padre recibe a sefal SIGCHLD Para efectua un seguiraientn adecuado de sus procesos hijos ysupervisar su fandicion do aalida, ol procote padew puede yu sna llamar await, inmediata- ‘oate despuss de engendrar eal proceao hijo 0, de manera ms oftient, es ‘ablacre un handler de seal que lamse-a wait (9 nWwastpidl cud vax gus al saisme le logue STOGHLD. ‘POSIX define ua conjunto de funciones para crear y maaipular setales. El procedimiento general consisto ee erear wn conjunta de setales, establecer las sefales que se devee intereeptar, registrar un handler ée sefales on el orael y aguardar a sntereeptay la sofa, 1 APL DE ADMINISTRACION DE SENALES ara eedas,extablecee« interroger a un eonjunto de seAaloy, utilen las sino funoienes cguienten, todas ellag definidas on sugenpryser(2igaet_x *s8t) sigrtiiser(sigset_¢ set); ine signadser(sigsat_t "sat, int signom ing sigoetset(agiers “22%, ‘ane sigisnenbar(const sigset wage, ane signuny; et as un conjunte de aefinos de tipo sigsat_t, omo so explis al emsianan Gelapinile sigomo ty s9% inisilisa ol eonjunto de cadalas So de mods quo ‘gucdea cxcluidas del mismo tadas Ingactales Sigfiliset, 2 le averse, iaikia Toa set de manera al que est Inelulda en el toa las senales. sigaddset anadea set is sanal signum, sigde1set elimina Signum de set ‘Bstas cuatze funciones retornan @ cuando tienen éxito -1 si ccurre un error. ‘Finalmente, sigismember comprueba si signun se encuentrs en Set, retar~ ‘anda 1 (verdadere) si la misma se encuentra presente 0 (also)sinoloes:é. Cantule $:Sefales 407 CCREAGION DE UN CONIUNTO DE SENUALES Para crear un conjunto de sefales, pues, willie sigenptyset o sigfillsct para incalizar un conjunto de sefales. Si crea un coajunto de sutales vaci, pecesitard emplear sigaddset para agrogarie as sefiales en Ins que se encusa- te interesado, Si por # eontrario crea un ennjunte que comprends todas ios sefales ottice $igdeLset para liminar del mismo las sefales que no dese. Ejemplos 1 Bute programa aieds una sodal aun conjunto de safalos vacio, y hago ttle 5igisnenber para confirmar quela satel 29 encuontra presents om elengjunte, watre oe sograsa an Tocamat: skstt.c stonona on eonlurte eae sain at aervetemae sages som_conueo; + crear ab coats */ si atgemeyseeiamueveconjurte)} © 0) srvor("aiguaan unio oe sata eeurtaete +/ seanes(Snuave_couts, STSEMA}) ‘utsl°SEGOAD ests areca ot aL conju ae sefales); pova("BIS300 no wate orcante onal corjurco ae scales") oe sists sates *) sire) fy 9, sngunea de oeteies); ? 2 FP YP SRD PPS Programacion an Linux utr sueess): errarehar taenre sated) erae (occurs safes re eACT FALE; 4 5 eas te EP sans sare eo oj wi UGTA pn asta srsbents am ok canjunte de efales 6 SEGTEW no es parte col mismo. {Ls 2 Bote gjomploilustra ol proceso de romocién de una sed deace un cea: to do sonales | sore aot proses en Inernets rmeote * elnino sofaten.s « eigtnaantates 66 un conjunc a pocian pee ince ato, ar maapos ‘ ‘set + nue cents 1 bemar cent + sr (sugreasetiuera_corjuts}) © 0) salir_si_arrar('sgtituset7); + eLanta SIDA del. confunea "i 1 jatyatese(dnavn cononto, SIGALAM) © 8) alin si erren(atgaednet K erean_conjunto_sefales peimeco crea un conjunty de setales vac, transt- snGndsle a sigenpty set ladirecciin de una estructura sigset_t Lasgo ana- 1 STOOHLO dicho conyunto de genalos. Finalmente anlisando sigismenber. ‘omfirma que SIGCHLD es efecavamento parte del cnjunto de seaalee y que setstg3samoer (dune compen, Sts) GALAW sci setae op OJ conjanta = safle LOULRU'to seta reverts ar ol canjte 4 setae}; ‘snusnesser nuevo conjures, STCTEM vte(°SISTEMC esta arerarta engl conjnts ce naales"|s as seeee(nomeee_sfal) OAT FATA: ene v9 caejunte dh antaten SIGTEAW este peasente al sejurto oe tates olininar_sefaies ve comporcaa Ia sversa de! progeatma del ejemplo an terior, creado ua conjaato que incluye la totalidad de las wetales, Luogo el mins SIGALAW De nuevo, la lamada 2 sigisnenber confirma que la sefal cliinads be eido efestiramente suprinida y que las demas senales siguen estando preseaten, REGISTRO Om HANOLER Ei mero hecho de crear un cagjunto de sedalesy luego agragar oaliminar se- ‘ales del mismo, sia embargy, no representa crear un handler de safales ai ‘permite interceptar obloquesr setales, Hay otros pases adicionales que se ‘eben adaptar Primero, se debe utilizar Sigproomask para establecer 0 ‘modificar (o ambas cosas a la ver) la rexpectiva mdscara de sefales coerien- ‘te; Sino se Aubiese aun establecido una mascara do sedales, todas las ae les caran lugar 2 una accén predeterminada. Una ver que se establezcs una mascara do efial, ce debers registrar un handler para la sel oseisles que se desea intarceptar, por medio de Sigction, (Coma seria de esperar a esta altura dal tents, sigaction y sigpraomeek se encuentran protetipadas on . Suc razpectivas pectotipoe.a0n Tos siguientes: ne sigprocausine sow, const signa ssa, sigue t olden): ‘algprocmasé establece o examina Ia mascara de sefales en vigensia, y lo ‘hace sogu el valor de tow, el cual puode sez uno de les tres siguientes: + STG_BLICK.set contiene efinles adictonalos a ser bloqueadas. ++ SIG_UNELOCK. $9 contiene seaulos quo deberda ser desbloqueadas. + SIG_SETWASK.20¢ contionela nuova mdscara do sofa, ‘Shor equivale @ NULL, gers ignotado, Si set vale NULL, la mascara co rete se aloacena en O1dset; si oldset oguivale a NULL, serdignorada. Sigorocask retorna @ si tiene éxito y-1 si enauentra alsin error, let signetiniing atanim, ese eeoue es ‘sigatton activa el handler do setal par la sets esperficads en si.gnun. Lasstrucura struct sigact ion deserite In manera dedispaner de la stil, ‘Sa defnicén completa, prosente ox (al cual) , sreuee ataueten | sage sus nt a4 fas vous (Pan cstorar) (va ua) ® 84_hand1er os un puntars una faneidn que expesifien ol handler, o fin- ‘in, star insoeudos cuando sea gonsrads Ia safal aspecifienda en Signum. ‘La farcién dae deastar dafinida eon un valor de retorna do tipo void fos dace, a0 eatararh aingin valor) 7 debe de aveptar un argumanta de tipo int Alternasivamanta, ol arzuments de Sa_handler puedo ser también STG_OFL, lo qua hace qua tanga luger la aedin predevarminada de signun, ‘9S1G_TGN, ln que souaionard qua seta gahal gen ignornda ‘Mieotras ua sandler de seal se eneventra en ejeeuidin, la seal qu Lo activo ‘queda bloqueada, a_mask definela méscara do un coajunto do safales adi Eonales que deberian quecar bloquesdss durante la ejeeucén del handle. SSa_f lace es una mascara que moifiea el comportamenta de s@_Nandler's, PuGleser uns o msde is siguentes altematinas + SA_NOCLDGTOP. £1 proceee ignocard cualquier sofa SIBSTOP, SIGTST®, SUGTTD\y STOTTOU gererada porel proceao hi ‘+ SA_ONESHOT 0 SA_AESETHANO. El handler de sefales personalizado sjecatara aéle una ver. Lugo de que se ejevute, se restanraré le scciin ‘prodoterminada de Is sel. ‘+ SA_RESTART. Habilita la posiilidad de efeetuar lsmadas a sistema reiticstles. 1+ SA_NOIASK 0 SA_NODEFER, Ne se opons a que la-saial sea rosibids en al Sterier do su propio handler coro 5 Sees ak : sui obsleto 7 m9 Nolo preste atencisn al elamento sa_restare” # aisnnestt obeeiaY dete ser empleado. Tonga en cuenta tama als expen $1927 5407 corveepende tanto al nombre de uns funcién cme al del pais db on roctara azociaga «la suisma. fies qu se desea be En resumen, sigprocrask manipula ol cajun dessins gu se dene ioe (quear e interrogn a la mascara de setales en rgenis- La fun ah gact Fogetra en ol erael un handler de uaa ms seas oligut el comporta- smimto exacto del mismo. Ejemplos . 1. El primer ejemplo senellarcente bloquea SIGALAHy S1STERM sin Broce~ dor ninstalar un hander que adopie alguna acién special aa on interne: bloke, 84 nts e Ett Hoclage oid salir_csrvorfchar fi 1+ fsoson oud naiter_gtrsoi(in; > anguar de sanaies +) at dala ‘ Capitue S:Se%alee 349 Registre ot naauer +7 subse. gerorisigaztioe"}; + Perisis 61 sufleuinte tatoo cosa sara enviar ta seal © stee6ai: sei (EKT SES) serroctnnanten: (cr FAURE); woud analar vavare) (int sigue) s(Enarenpeiga USA); as an , handler_usuariot es un sencillo handler de seaa!, quene hace mds qua {nformar al hecho do que intarcapts « STGISR', Como al eioatheo ¢a_mask dde accion, ia sctructura de patréa aigaction, deberta contener setales ‘adicionales a las cuales bloquear mientras se efecuta ol handler de seal, eso simplemente fo inelalizacoa un coqjunto vaeto de senales transfirien- doio direcamente a sigengtyset, Un: vez que el bandler se encuentra coafigurado, Sigact om lo registra para SIGUSAI. Como en este ease na in- teresa ig respuesta anterior dei handles se asigna NULL como valer de set, Finalmente, el programa queda inactive durante 6) segundos como pera disponer del suficente tiempo como para eaviarle una sefal. Corrs el programas una ventana, y enviele STOUSA! datde ates, como s+ iinet a4 Prograrvacion en Lin ae $e 4 blaaiear ssuaris [kill “Use $ abt.) etsqvenr usuario) “reeraaotace Sit 1s salida munatra quo ol handlsr fuss rogiotrado ositoramonte, Luegs de ss cutarce al Randle, ol programa termi. CONSEIO Staus2t y 310U822 pa sito etoniimaniameervede ca { Sroararae Se dna alee comic te devon Pb ‘ier aoe tal coma vver a eer rho do coat 9 ga \Gvansir ae asta a nfo deft ona ias segs estaraarcxya senna ya ‘ancinra ben eats, Deteccién Seen sigpanding hece posible que an proceso detects secles pondientzs(sefales ue fueron guneradas mientras los mamas se encontraban bloqueadssi ¥ Taogo decidir 5 gnorarias 0 permitir que lleven a cabo su tecién. Para qué se dobe verificar qué seales extdn pendientes? Supongamos que el lector desea eser* a un archivo, y dicha operacién no debe ser interrumpida atin de preservar in integriéad del archivo. Durante al proceso de escritura isco, pes, uno desears mantener bloqueadas SIGTERM y SIGOULT, pero fuera de esta cicunstancia ins desea admiristrar 0 permitiries que lleven a cabo su accion predeterminada De modo que, antes de dar comienzo a ia peracién de aseritura, uno bloqusard a STGTERM y SIGQUCT. Una vez que la eseribura archive se hava eompletado satisactoriamente, se deberin ve~ rificar Ia eristencia de setales pendientes x si SLGTERM o STSQJTT se en contrasen pendientes, se necesitaria desbloqueaclas, O, sencllamente se las podrd destlequcar sin molestarse ea verificar si se encuentran peadientes 0 fo, Verifiear ia presencia de sefales pencientes o ao es opconal. i se desea ‘decutar un bloque especial de codigo si sa encuentra presente cierta Seda, ‘erifiquela. Sn otro caso, simplemente desbloqudelas. Igual quo las demas fancionos do aofiales, sigponding eo oncuontra protot- pada on <2ignal.n>. El prototigo do sigponding' sot Ine sugpenaing ageet a6); 2 conjunty de las aeiles pendieates ve cetoraw on set. La lamada en si retorna O al resultdexitoss 0-1 l ge regists elgin erro. Uelie sigismen- ber afin dedetermina: a laa yetales on las que se encuentra interesado es ‘dn pendienes, es dees l se enouentran presentes en set. Ejemplo Para propistos de demostrsein, este programa bloauea a SIGTERW, luego detarminas se eneuencrs pendiente y Finalmente la igoora y termina nor~ nalemoate, toners of argrina ar oteenats geosing © "7 Hence CovitloS:Sefeles a8 pisetisa coast. Hopeede sigeet conjuea.aeialas, cnjentopentienes sugeptysetidesngante_seles); sigedret(Aconjuntosetaan, STE); + aloqune ta soa" siceronank(s 100%, Aeolunte_saeden, NAL! (geet, uote 5 + poenar seales oessuetes */ sgaraicg heonpente patents) sf (atginaneareonterta eraser (+ tpwrae SisTeRM +) Sigeccon(StOTEM, Mceton, LEI; + Desiiaiear SISTER + sent SES; Ba beuecis de la brovedud se ha omitide Is verifencidn de arrores Bt obdi- jp resulta sencilo de interpevtar- Elmiamoorea una méscera que bloquea 8 Sxorenw y iuoge utiliza 421 pore caviar QEGTERN hacia of aime. Como esta bloqueada la sotal no Hege = destino, Seustliza sigpending y #igi5~

Você também pode gostar