Posts Tagged ‘función’

C: fork()

Cuando se hace una llamada fork, el proceso hijo creado es una copia exacta del padre (salvo por el PID y la memoria que ocupa). Al proceso hijo se le facilita una copia de las variables del proceso padre y de los descriptores de fichero. Es importante destacar que las variables del proceso hijo son una copia de las del padre (no se refieren físicamente a la misma variable), por lo que modificar una variable en uno de los procesos no se refleja en el otro.

fork: En el momento de la llamada a fork el proceso hijo:

  • es una copia exacta del padre excepto el PID.
  • tiene las mismas variables y ficheros abiertos.
  • las variables son independientes (padre e hijo tienen distintas memorias).
  • los ficheros son compartidos (heredan el descriptor).

En el fork() el hijo creado obtiene una copia de todos los campos del task_struct del padre y su propio identificador.

#include <stdio.h>
#include <unistd.h>

Void main() {
  pid_t pID = fork();
  if (pID == 0) {
    // Hijo
    printf("¡¡¡Soy el hijo!!!");
  }else if (pID > 0) {
    // Padre
    printf("¡¡¡Soy el padre!!!");
  }else {
    // Error al hacer el fork
    // Throw exception
    printf("¡¡¡Error!!!");
  }
}

Referencias:

Linux cross reference
http://lxr.linux.no/

Share

Javascript : Función getElementsByClass

Cuando quieres interaccionar con el DOM Javascript ofrece posibilidades como “getElementById” o “getElementsByTagName“, pero si lo que necesitamos es trabajar con una lista de elementos cuyo único punto de conexión es la clase CSS, pues nos toca trastear a mano para conseguir acceder a ellos…

Buscando por Internet he dado con una función que nos facilitara la tarea.

Se trata de una función preparada de antemano para retornar exactamente lo que necesitamos.

function getElementsByClass( searchClass, domNode, tagName) {
	if (domNode == null) domNode = document;
	if (tagName == null) tagName = '*';
	var el = new Array();
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++) {
		var test = " " + tags[i].className + " ";
		if (test.indexOf(tcl) != -1)
			el[j++] = tags[i];
	}
	return el;
}

Y aqui dejo un trozo de código HTML usando ficha función para que entendáis mejor el ejemplo :

 <html><head><title>getElementsByClass test page</title>

<script type="text/javascript">

// paste getElementsByClass function (see above) here 

function showtab(tabname)
{
	// hide every element with class 'tab'
	var tabs = getElementsByClass('tab');
	for(i=0; i<tabs.length; i++)
		tabs[i].style.display = 'none';
	// hide every element with class 'tab'		 

	document.getElementById(tabname).style.display='block';
	// show element with given tabname
}
</script>

<style type="text/css">
/* We use several classes here to test getElementsByClass */
div.tab {  width: 100px; height: 100px; border: 1px solid black; }
div.bgray { background-color: gray;}
</style>

</head>
<body>

<a href="#" onclick="showtab('tab1');">tab1</a>,
<a href="#" onclick="showtab('tab2');">tab2</a>,
<a href="#" onclick="showtab('tab3');">tab3</a>,
<a href="#" onclick="showtab('tab4');">tab4</a>,
<a href="#" onclick="showtab('tab5');">tab5</a>

<div class="tab bgray" id="tab1">
Tab1
</div>

<div class="tab bgray" id="tab2" style="display: none;">
Tab2
</div>

<div class="tab bgray" id="tab3" style="display: none;">
Tab3
</div>

<div class="tab bgray" id="tab4" style="display: none;">
Tab4
</div>

<div class="tab bgray" id="tab5" style="display: none;">
Tab5
</div>

</body></html>

Recordar que se trata de una función, no de un método de Clase, así que la utilización correcta seria esta :

getElementsByClass('algo')

y no esta :

document.getElementsByClass('algo')

Os dejo un link de la pagina donde encontré este código que puede sernos bastante útil en bastantes ocasiones.

Por cierto según explican en la propia pagina la función funciona (nunca mejor dicho) en :

  • Internet Explorer 6.x, 7.x
  • Opera 8.x, 9.x
  • Mozilla Firefox
  • Apple Safari
  • y otros navegadores “modernos” (esta info tan precisa nunca inspira mucha confianza) ;)
Share