Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ithory

#1
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.




#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <stdlib.h>


int pidh;
int i,j;
int B[2][2];
int pipe1[2];
int enviar[2];
int recibir[2];
int salirhijo=0;
int salirpadre=0;

void leer(){
for(i=0;i<2;i++){
read(pipe1[0],&recibir[i],sizeof(int));
}
//recibo los datos en el vector de 2 posiciones recibir[2].
printf("Los datos recibidos por la pipe son: %d y %d", recibir[0], recibir[1]);
}


int main(){

pipe(pipe1);

pidh=fork();

if(pidh == 0){  //hijo

        signal(SIGUSR1,leer);
while(salirhijo == 0){
        printf("Hijo esperando...\n");
        sleep(1);
        }

}else{          //padre

sleep(1);

for (i=0;i<3;i++){
for (j=0;j<3;j++){
B[i][j]= rand() % 10;

printf("%d ",B[i][j]);
sleep(1);
}
printf("\n");

}

printf("Elemento b11 -> %d\n",B[0][0]);
printf("Elemento b32 -> %d\n",B[2][1]);

//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.

enviar[0] = B[0][0];
enviar[1] = B[2][1];

        for(i=0;i<2;i++){
        write(pipe1[1],&enviar[i],sizeof(int));
        kill(pidh,SIGUSR1);
        sleep(1);

        }
}
}




Saludos y gracias!!
#2
GNU/Linux / No funciona chmod +x para dar permisos
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!!
#3
GNU/Linux / Error al instalar un tar.gz
8 Noviembre 2012, 14:32 PM
Hola buenas, estoy intentando instalar varios tar.gz  pero al hacer ./configure (estando como root)
me sale esto:

Citar-su: ./configure: Permission denied

Tambien le he dado permisos de ejecucion con chmod pero nada.

Descomprimo el contenido con tar xvfz, accedo a la carpeta, despues accedo a la carpeta src y hago ./configure pero me salta el fallo.

Si hago
Citarbash configure

me dice lo siguiente:

Citarchecking 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.


Alguna idea de que puede ser?

He de decir que uso Linux mint 13 y que el gcc esta instalado.

Saludos!!
#4
Scripting / [BASH] usar return en bash
6 Noviembre 2012, 23:49 PM
Hola buenas, esta función cambia el pass de un pequeño programa que estoy haciendo:



Código (bash) [Seleccionar]
function cambiarpass(){
c=0
while (test $c -eq 0)
do
echo "Introduce una contraseña: "
read pass
echo "Confirma la contraseña: "
read pass2

if [ $pass = $pass2 ]
then
c=1 #para salir del bucle
fi

if [ $pass != $pass2 ]
then
echo "Las contraseñas no coindicen"
echo ""
fi

done #fin while
return $pass
}


Yo ahora si quiero usar esa nueva contraseña (variable pass) en el programa principal, como debería llamar a la funcion?

he probado: (en el main)

var=cambiarpass
o
var=$cambiarpass

pero ninguna funciona ya que en var deberia tener el valor de $pass.
como sería?

Saludos y gracias!