elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: Cerrar programa con funcion exit en: 22 Diciembre 2012, 13:42 pm
Al final de cada proceso para liberar los recursos hay que usar la llamada al sistema exit();, exit(0) por ejemplo.

Pero solo al final de cada proceso, por ejemplo si creas un proceso con fork();

int valor;
valor=fork();

if(valor == 0) //estamos en el proceso hijo, cuando acabemos de poner el código del hijo haremos un
.....
.....
.....
exit(0)
2  Programación / Programación C/C++ / Re: Pasar más de un int con una pipe en: 15 Diciembre 2012, 13:23 pm
Ok gracias, era eso que me había hecho un lío con las matrices!
Dejo el código corregido. Gracias.

Código
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/types.h>
  4. #include <signal.h>
  5. #include <stdlib.h>
  6.  
  7.  
  8. int pidh;
  9. int i,j;
  10. int B[2][2];
  11. int pipe1[2];
  12. int enviar[2];
  13. int recibir[2];
  14. int salirhijo=0;
  15. int salirpadre=0;
  16.  
  17. void leer(){
  18. for(i=0;i<=1;i++){
  19. read(pipe1[0],&recibir[i],sizeof(int));
  20. }
  21. //recibo los datos en el vector de 2 posiciones recibir[2].
  22. printf("Los datos recibidos por la pipe son: %d y %d\n", recibir[0], recibir[1]);
  23. salirhijo=1;
  24. }
  25.  
  26.  
  27. int main(){
  28. pipe(pipe1);
  29. pidh=fork();
  30.  
  31. if(pidh == 0){  //hijo
  32.  
  33.        signal(SIGUSR1,leer);
  34.        while(salirhijo == 0){
  35.        printf("Hijo esperando...\n");
  36.        sleep(1);
  37.        }
  38.  
  39. }else{          //padre
  40.  
  41. sleep(1);
  42.  
  43. for (i=0;i<2;i++){
  44. for (j=0;j<2;j++){
  45. B[i][j]= rand() % 10;
  46.  
  47. printf("%d ",B[i][j]);
  48. sleep(1);
  49. }
  50. printf("\n");
  51. }
  52.  
  53. enviar[0] = B[0][0];
  54. enviar[1] = B[1][1];
  55.  
  56.  
  57. printf("Elemento b11 -> %d\n",enviar[0]);
  58. printf("Elemento b22 -> %d\n",enviar[1]);
  59. printf("Estos datos son los que voy a pasar por la pipe\n");
  60. //le voy a enviar 2 elementos al hijo por la pipe, para ello antes los meto en el vector enviar que es de 2 posiciones.
  61.  
  62.        for(i=0;i<=1;i++){
  63.        write(pipe1[1],&enviar[i],sizeof(int));
  64.        kill(pidh,SIGUSR1);
  65.        sleep(1);
  66.  
  67.        }
  68. }
  69.  
  70. }
  71.  
3  Programación / Programación C/C++ / Pasar más de un int con una pipe en: 14 Diciembre 2012, 16:06 pm
Hola, ¿es posible pasar más de un int por cada pipe o solo se puede pasar un dato por cada pipe?

Yo tengo 2 valores enteros que quiero enviárselos del proceso padre al hijo mediante una pipe.

Cuando envío los valores los meto en el vector enviar[2] y cuando los recibo los guardo en recibir[2].
Pero al recibirlo y mostrarlo me muestra unos caracteres raros.



Código
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/types.h>
  4. #include <signal.h>
  5. #include <stdlib.h>
  6.  
  7.  
  8. int pidh;
  9. int i,j;
  10. int B[2][2];
  11. int pipe1[2];
  12. int enviar[2];
  13. int recibir[2];
  14. int salirhijo=0;
  15. int salirpadre=0;
  16.  
  17. void leer(){
  18. for(i=0;i<2;i++){
  19. read(pipe1[0],&recibir[i],sizeof(int));
  20. }
  21. //recibo los datos en el vector de 2 posiciones recibir[2].
  22. printf("Los datos recibidos por la pipe son: %d y %d", recibir[0], recibir[1]);
  23. }
  24.  
  25.  
  26. int main(){
  27.  
  28. pipe(pipe1);
  29.  
  30. pidh=fork();
  31.  
  32. if(pidh == 0){  //hijo
  33.  
  34.        signal(SIGUSR1,leer);
  35. while(salirhijo == 0){
  36.        printf("Hijo esperando...\n");
  37.        sleep(1);
  38.        }
  39.  
  40. }else{          //padre
  41.  
  42. sleep(1);
  43.  
  44. for (i=0;i<3;i++){
  45. for (j=0;j<3;j++){
  46. B[i][j]= rand() % 10;
  47.  
  48. printf("%d ",B[i][j]);
  49. sleep(1);
  50. }
  51. printf("\n");
  52.  
  53. }
  54.  
  55. printf("Elemento b11 -> %d\n",B[0][0]);
  56. printf("Elemento b32 -> %d\n",B[2][1]);
  57.  
  58. //le voy a enviar 2 elementos al hijo por la pipe, para ello antes los meto en el vector enviar que es de 2 posiciones.
  59.  
  60. enviar[0] = B[0][0];
  61. enviar[1] = B[2][1];
  62.  
  63.        for(i=0;i<2;i++){
  64.        write(pipe1[1],&enviar[i],sizeof(int));
  65.        kill(pidh,SIGUSR1);
  66.        sleep(1);
  67.  
  68.        }
  69. }
  70. }
  71.  
  72.  
  73.  

Saludos y gracias!!
4  Sistemas Operativos / GNU/Linux / Re: No funciona chmod +x para dar permisos en: 20 Noviembre 2012, 14:15 pm
Conseguí montar la particion automáticamente sin la utilidad, simplemente añadiendo la siguiente línea al fichero /etc/fstab:

Citar
UUID=69E1EE8ABBB7D98F /media/DATOS ntfs-3g default 0 0



Saludos!
5  Sistemas Operativos / GNU/Linux / Re: No funciona chmod +x para dar permisos en: 18 Noviembre 2012, 01:04 am
Yo en /etc/fstab tengo lo siguiente:

Citar

  GNU nano 2.2.4                                           Fichero: fstab                                                                                              

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda6 during installation
UUID=d0c83f74-ea0f-4ea2-acfc-17728dae80bc /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda7 during installation
UUID=244004cd-fd83-4d86-896d-6dfd1e2f8ae6 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0


Pero ahí no aparece mi partición D (Datos que es nfts)
Solo la de debian sda6 y el swap sda7

¿Qué debo hacer con esto?

Con la utilidad de discos si que aparece todo, pero no sé qué hacer.

Saludos y gracias por las respuestas  :D

6  Sistemas Operativos / GNU/Linux / Re: No funciona chmod +x para dar permisos en: 17 Noviembre 2012, 23:17 pm
Muchas gracias! Funciona perfectamente!

Pero solo lo puedo ejecutar si lo pongo en la carpeta de usuario como bien dices.


Citar
si lo quieres ejecutar en otra localización comprueba los permisos en ella.

Puedes aclarar un poco más esto?
7  Sistemas Operativos / GNU/Linux / No funciona chmod +x para dar permisos en: 17 Noviembre 2012, 16:44 pm
Hola buenas, estoy tratando de ejecutar varios archivos .sh que me descargo pero en todos me pone lo mismo:
Algo asi como que no tengo permisos para ejecutarlo.
Entonces me voy a la terminal, hago chmod +x nombrearchivo pero no ocurre nada, sigue teniendo solo los permisos de r y w.

Alguien sabe por que no funciona el chmod? tambien he probado con chmod 777 nombredelarchivo pero nada, incluso estando como root (uso debian).

Estoy tratando de instalar el BOINC (una aplicacion para la ayuda a la investigacion extraterrestre, entre otras)
pero no me funciona porque no tengo permisos. (Es un .sh)

Alguien sabe como arreglar esto de que el chmod no funcione??

Saludos!!
8  Sistemas Operativos / GNU/Linux / Re: Error al instalar un tar.gz en: 10 Noviembre 2012, 16:14 pm
He instalado las librerias que has dicho, pero el error sigue apareciendo cuando hago
bash configure (ya que ./configure no me funciona)

Citar
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... configure: error: in `/media/DATOS/Descargas_Linux/reaver-1.4/src':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.

9  Programación / Programación C/C++ / Re: Continuar estudiando C en: 8 Noviembre 2012, 23:36 pm
Cuando aprendes las estructuras de control, las funciones y tal, normalmente lo que se aprende después son las estructuras de datos (pilas, colas, listas, arboles...etc).
Pero esto sigue siendo "solo texto", no es nada gráfico si es a lo que te refieres.

@apoeti mas que leer codigos, rompete la cabeza haciendolos tu. Asi es como se aprende.

10  Sistemas Operativos / GNU/Linux / Re: Error al instalar un tar.gz en: 8 Noviembre 2012, 23:28 pm
¿Puedes decirme cuales son esas librerias y como las puedo instalar?
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines