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ú

Mensajes - juligarc10

#1
Hola amigos. Me estoy proponiendo deshabilitar algunos servicios que pueden ser prescindibles en mi debian, pero no acabo de comprender bien como funcionan y en que se diferencian los flags --reverse, --before, --after, --all.
No acabo de captar bien los matices que los diferencia, a pesar de haber googleado bastante, no acabo de enterarme. ¿Alguien podría explicarmelo? Gracias, un saludo.
#2
Resuelto reinstalando el entorno de escritorio desde terminal con recovery mode.

Gracias a todos.
#3
Cita de: MinusFour en  6 Octubre 2020, 20:47 PM
Has intentado con alguna sesión diferente a GNOME? O lo que este usando por defecto Ubuntu estos días.

Uso GNOME, pero como puedo cambiar a otro entorno distinto, sin teclado ni ratón?
#4
Cita de: MinusFour en  6 Octubre 2020, 20:12 PM
¿Hay alguna razón para creer que el entorno gráfico no ha fallado? E.g. ves algún icono cambiar en el menú o alguna animación de cualquier tipo. Intenta cambiar de TTY:

CTRL+ALT+F1 (o F2, F3, etc). Si puedes cambiar de TTY entonces no es problema con tu teclado y mouse.

Si es el entorno gráfico lo que ha fallado toca ver los logs del servidor de las X o el compositor de Wayland (si es lo que estás usando).

Gracias por responder.

Si hay razones, ya que tengo algún programa que está programado para ejecutarse de inicio, y este se ejecuta sin ningún problema. Puedes ver como se abre paso a paso. Sin embargo ni el ratón ni el teclado responden.
#5
Hola a todos.

Tengo un problema que necesito solucionar cuanto antes. Tras reiniciar ubuntu version 20.04, me deja meter la contraseña de mi usuario con total normalidad, y cuando va a cargar el escritorio, se inicia normalmente, todo carga, pero el ratón y teclado no responden. ¿Alguien sabe por qué puede ser?

Muchas gracias de antemano. Un saludo.
#6
Hola amigos. Estoy haciendo una shell en c como ejercicio práctico. Estaba implementando el equivalente a "cd" en la shell de linux. Funciona de maravilla, exceptuando que si tu quieres retroceder un directorio poniendo "cd ..", lo que sucede es que retrocede dos directorios, es decir... Si estás en /home/usario/Escritorio, te lleva a /home.

La función es esta, aunque no creo que esté mal. Sabéis como se puede solucionar?

void cddir(char *tr) {
    if(chdir(tr)==0) {
        chdir(tr);
    } else {
        printf("%s %s\n", "No existe el directorio: ", tr);
    }
}


Gracias.
#7
Cita de: K-YreX en 25 Septiembre 2020, 17:17 PM
Tienes varias opciones para hacer lo que quieres.

Si dejas la función trocear() tal y como la tienes, tienes que utilizar memoria dinámica:

#define SIZE 50
int main(){
    char *cadena = "Esta es una cadena de prueba";
    // Array bidimensional [SIZE][SIZE] con memoria dinamica:
    char **palabras = (char**)malloc(SIZE * sizeof(char*));
    for(size_t i = 0; i < SIZE; ++i){
        palabras[i] = (char*)malloc(SIZE * sizeof(char));
    }
    int numero_palabras = trocear(cadena, palabras);
    for(size_t i = 0; i < numero_palabras; ++i){
        printf("Palabra %i: %s\n", i+1, palabras[i]);
    }
    // Al terminar tienes que liberar la memoria reservada dinamicamente
    for(size_t i = 0; i < SIZE; ++i){
        free(palabras[i]);
    }
    free(palabras);
}


Si quieres usar un array de manera estática tienes que definir la función trocear() como:
int trocear(char *cadena, char palabras[][SIZE]);
(Es optativo especificar el tamaño de la primera dimensión de un array pero para el resto de dimensiones es obligatorio)

Muchas gracias por tu respuesta, ha sido de gran ayuda. De todas formas me gustaría preguntarte como implementaría la segunda opción. Le pasaría a la función un char palabras[][SIZE], pero despues como operaría con el dentro de la función? Me refiero sobre todo a los strtok y eso...

Gracias.
#8
Hola amigos, estoy tratando de hacer una función que trocea una cadena, y la separa en los espacios, guardando cada palabra en una fila de la matriz. Para eso la paso por referencia (es decir, con un puntero) a la función trocear(), que ya he comprobado que funciona. Mi problema es que una vez que trocea, y en teoría se modifican los datos, no sé como acceder a los datos guardados. Paso código.

int trocear(char * cadena, char * trozos[])
{
        int i=1;
if ((trozos[0]=strtok(cadena," \n\t"))==NULL){
return 0;
//printf("%s\n", trozos[0]);
}
while ((trozos[i]=strtok(NULL," \n\t"))!=NULL){
//printf("%s\n", trozos[i]);
i++;
}
return i;
}

/*****************************************************************/

void procesarEntrada(char entrada[]){
char trozos[10][10];
//char *tr;
char *tr;
tr = trozos[0];
trocear(entrada, &tr);
}


Gracias de antemano. Un saludo.



MOD: Etiquetas de código GeSHi adaptadas a lenguaje C
#9
Hola gente. Estoy realizando un pequeño proyecto en el cual pretendo imitar un shell, y en este caso estoy diseñando una función que haga lo mismo que el 'ls -li' del shell de Linux. Esta entre otras cosas me debe de mostrar los permisos del archivo. Para ello uso una función, a la cual se le pasa por parámetro un mode_t, y me tendría que devolver un puntero de tipo char (string).
Al intentar compilar el proyecto me da un error de 'conflicting types for 'ConvierteModo2''.
Las librerías necesarias las tengo todas importadas, y he probado a hacerlo de forma chapuza, y no modularizada, y así funciona. De aquí saco como conclusión que el problema viene de que no me lee bien el mode_t pasado por parámetro, o bien que el hecho de que me devuelva un puntero a un char falle en algún punto...

Este es el código:

else if (strcmp( entrada,"info")==0) {
        char *permiso;
        char path[]="/home/julian/Escritorio/a.out";
        permiso=(char *) malloc (12);
        struct stat a;
        stat(/*trim(tr[1])*/path, &a);
        permiso=ConvierteModo2(a.st_mode);


char *ConvierteModo2 (mode_t m) {
    static char permisos[12];
    strcpy (permisos,"---------- ");
    permisos[0]=TipoFichero(m);
    if (m&S_IRUSR) permisos[1]='r';  /*propietario*/
    if (m&S_IWUSR) permisos[2]='w';
    if (m&S_IXUSR) permisos[3]='x';
    if (m&S_IRGRP) permisos[4]='r';   /*grupo*/
    if (m&S_IWGRP) permisos[5]='w';
    if (m&S_IXGRP) permisos[6]='x';
    if (m&S_IROTH) permisos[7]='r';   /*resto*/
    if (m&S_IWOTH) permisos[8]='w';
    if (m&S_IXOTH) permisos[9]='x';
    if (m&S_ISUID) permisos[3]='s';  /*setuid, setgid y stickybit*/
    if (m&S_ISGID) permisos[6]='s';
    if (m&S_ISVTX) permisos[9]='t';
    return (permisos);
}


Alguien podría echarme una mano? Gracias de antemano.
#10
Programación C/C++ / Re: Array de punteros en C
23 Octubre 2019, 13:40 PM
Muchas gracias por tu contestación.

Mi problema ya lo había resuelto, y fue usando una matriz, en la cual, en cada fila se almacena un comando distinto, de esa manera siempre tengo acceso a todos los comandos que he introducido.

De todas formas, gracias:  ;D