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


 


Tema destacado: Píldoras formativas en seguridad de la información


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Procesos con fork en: 27 Mayo 2020, 01:59
RayR a partir de ahora eres mi nuevo amigo  ;-)

Cerré los descriptores en el último proceso hijo y funcionó tal como dijiste.

Muchas gracias.
2  Programación / Programación C/C++ / Procesos con fork en: 23 Mayo 2020, 02:05
Hola a todos. Estoy viendo el tema de procesos con fork y tuberías con pipe y haciendo un mini shell (o intentando :D). Mi problema se presenta cuando, para decirlo más gráficamente, encuentro un comando o mandato como este:

Código
  1. ls | grep 'patron' | wc -l

Entonces, en este caso son 3 comandos. Tengo un código de prueba pero no esta funacionando. Si alguien pasó por esto o tiene alguna sugerencia bienvenido sea.

Código
  1. int main (int argc, char *argv[]) {
  2. int i,
  3. fd[2], fd0[2],
  4. pid[3];
  5.  
  6. /* Creación recurso tubería, por el padre */
  7. pipe(fd);
  8.  
  9. /* 1er hijo, ejecuta ls */
  10. if ( (pid[0]= fork()) == 0) {
  11. dup2(fd[1], STDOUT_FILENO);
  12. close(fd[0]);
  13. execlp("/bin/ls", "ls", NULL);
  14. perror("Hijo1: Fallo al hacer exec");
  15. exit (1);
  16. }
  17.  
  18. pipe(fd0);
  19.  
  20. /* 2do hijo, ejecuta filtro */
  21. if ( (pid[1]=fork()) == 0) {
  22. dup2(fd[0], STDIN_FILENO);
  23. close(fd[1]);
  24. dup2(fd0[1], STDOUT_FILENO);
  25. close(fd0[0]);
  26. char* arg[] = { "sort", "sort", NULL };
  27. execvp(arg[0], &arg[1]);
  28. //execvp(argv[1], &argv[1]);
  29. perror("Hijo2: Fallo al hacer exec");
  30. exit(1);
  31. }
  32.  
  33. if((pid[2]=fork()) == 0) {
  34. dup2(fd0[0], STDIN_FILENO);
  35. close(fd0[1]);
  36. char* arg[] = { "wc", "wc", "-l", NULL };
  37. execvp(arg[0], &arg[1]);
  38. perror("Hijo2: Fallo al hacer exec");
  39. exit(1);
  40. }
  41.  
  42. /* El padre no interviene */
  43. close(fd[0]);
  44. close(fd[1]);
  45. close(fd0[0]);
  46. close(fd0[1]);
  47. /*for (i=0; i<2; i++)
  48. wait(pid[i]);*/
  49. exit (0);
  50. }
  51.  
3  Programación / Programación Visual Basic / Re: Conexión con base de datos remota en: 21 Septiembre 2019, 16:49
Prueba con esto en la cadena de conexión

Provider=Microsoft....
Data Source=\\server\share\folder\myAccessFile.mdb;

Saludos
4  Programación / Programación C/C++ / Re: Problemas con estructura anidada y archivos binarios en: 21 Septiembre 2019, 14:48
Me parece que estas leyendo el archivo solo el primer registro.

Debería ser algo como:

leer_registro
Mientras _no_sea_el_final_del_archivo {
    Operar
    leer_registro
}

Espero te ayude.
5  Programación / Programación Visual Basic / Re: Obtener valor en MSFlexGrid en: 2 Abril 2019, 02:31
Prueba lo siguiente:

Código:
MSFlexGrid.TextMatrix (MSFlexGrid.RowSel, COL_MATHEMATICS)

Saludos.
6  Programación / Programación C/C++ / Re: Ayuda c++ en: 1 Abril 2019, 20:38
#include <iostream>

using namespace std;

bool isPair (int number) {
    return (number % 2 == 0 ? true : false );
}

bool isOdd (int number) {
    return !isPair(number);
}

bool isPrimeNumber (int number) {
    if (number == 2)
        return true;
       
    if (isOdd(number)) {
        for (int i = 3; i < number; i++) {
            if (number % i == 0)
                return false;
        }
        return true;
    }
    else {
        return false;
    }
}

int numberOfDigits (int number) {
    if (number >= 100 && number < 1000)
        return 3;
    if (number >= 10 && number < 100)
        return 2;
    else
        return 1;
}

int sumOfDigits(const int number) {
    int hundred = 0;
    int ten = 0;
    int unity = 0;
   
    if (numberOfDigits(number) > 3) {
        hundred = number / 100;
        ten = (number % 100) / 10;
    }
    else {
        ten = number / 10;
    }
    unity = number % 10;
   
    return (hundred + ten + unity);
}

void minorPrimeNumbersThat (const int NUMBER, int arrayOfPrimeNumbers[]) {
    int index = 0;
    int sum = 0;
   
    for (int i = 2; i <= NUMBER; i++) {
        if (isPrimeNumber(i)) {
            if (numberOfDigits(i) == 1) {
                arrayOfPrimeNumbers[index++] = i;
            }
            else {
                sum = sumOfDigits(i);
                if (isPrimeNumber(sum)) {
                    if (numberOfDigits(sum) == 1) {
                        arrayOfPrimeNumbers[index++] = i;
                    }
                    else {
                        sum = sumOfDigits(sum);
                        if (isPrimeNumber(sum)) {
                            if (numberOfDigits(sum) == 1)
                                arrayOfPrimeNumbers[index++] = i;
                        }
                    }
                }
            }
        }
    }
}

void printNumbers ( int array[], const int LENGTH_ARRAY) {
    for (int i = 0; i < LENGTH_ARRAY; i++)
        cout << array << ", ";
}

int main()
{
    const int NUMBER = 100;
    const int LENGTH_ARRAY = 25;
   
    int arrayOfPrimeNumbers[LENGTH_ARRAY] = {0};
   
    cout << "Absolute Prime Numbers : ";
    printNumbers (arrayOfPrimeNumbers, LENGTH_ARRAY);
    cout << endl;
   
    minorPrimeNumbersThat (NUMBER, arrayOfPrimeNumbers);

    printNumbers (arrayOfPrimeNumbers, LENGTH_ARRAY);
   
    return 0;
}

Tiene sus limitaciones. Espero que te sirva. Saludos
7  Programación / Programación C/C++ / Re: necesito ayuda con este programa en: 1 Abril 2019, 01:23
Esta es la línea 79

        p->g_total = p->g-total + p->total;

por aquí puede estar el fallo, veo p->g_total (guion bajo) y también p->g-total (guion).
8  Programación / Programación C/C++ / Re: Necesito Ayuda Creacion Programa en C++ en: 29 Marzo 2019, 01:14
El comando WMIC de Windows puede proporcionar información sobre los dispositivos del PC. Por ejemplo:

C:\>wmic MEMORYCHIP get BankLabel,DeviceLocator,Capacity,Speed[Enter]
BankLabel Capacity       DeviceLocator Speed
Bank0       2147483648 M1                 800
Bank1       2147483648 M1                 800

Para ejecutarlo desde un programa de C++ podrías usar ShellExecute (include<windows.h>)

ShellExecute(NULL, "open", " C:/notepad.exe ", NULL, NULL, SW_SHOWDEFAULT);

Esto es sólo una idea. Espero te sirva.
Páginas: [1]
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines