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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Manipulación de archivos en: 23 Noviembre 2013, 17:01 pm
¿Por qué no me funciona el stat?

Código
  1. #include<unistd.h>
  2. #include<sys/stat.h>
  3. #include<fcntl.h>
  4. #include<stdio.h>
  5. #include<errno.h>
  6. #include<sys/types.h>
  7. #include<dirent.h>
  8. #include<string.h>
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12. DIR *dir;
  13. struct dirent *ent;
  14. char **ptr;
  15. long octal;
  16.  
  17. if( strlen(argv[2]) != 4){
  18. printf("\nError al introducir el numero de digitos del parametro 2\n");
  19. exit(-1);
  20. }
  21.  
  22. if( (dir=opendir(argv[1]))==NULL){
  23. printf("\nError en el primer open\n");
  24. exit(-1);
  25. }
  26.  
  27. octal = strtol(argv[2], ptr, 8);
  28.  
  29. struct stat *atributos;
  30. int fd;
  31. while ((ent = readdir(dir)) != NULL){
  32. if( (strcmp(ent->d_name, ".")!=0) && (strcmp(ent->d_name, "..")!=0) ){
  33. if ( (fd = open(ent->d_name,O_CREAT|O_TRUNC|O_WRONLY,S_IRGRP|S_IWGRP|S_IXGRP))<0){
  34. printf("\nError en el segundo open\n");
  35. exit(-1);
  36. }
  37.  
  38. printf("%s", ent->d_name);
  39. printf("%s\n", " : ");
  40.  
  41. if ( (stat(ent->d_name, atributos)) <0){
  42. printf("\nError en stat\n");
  43. exit(-1);
  44. }
  45. chmod(ent->d_name, octal);
  46. close(fd);
  47. }
  48. }
  49.  
  50.  
2  Programación / Programación C/C++ / Ayuda con ejercicio de Hebras/Hilos y semaforos en: 26 Octubre 2013, 21:14 pm
EEl programa compila, pero no funcion por lo que no se cual puede ser el error.
Código
  1. #include <iostream>
  2. #include <pthread.h>
  3. #include <semaphore.h>
  4. using namespace std;
  5.  
  6. const int num_items = 75 ;
  7. const int tam_vec = 15 ;
  8. int vector[tam_vec] ;
  9. int primera_libre = 0 ;
  10. int primera_ocupada = 0 ;
  11. sem_t puede_leer, puede_escribir ;
  12.  
  13.  
  14.  
  15. int producir_dato(){
  16.  
  17. int contador = 1 ;
  18. return contador++ ;
  19. }
  20.  
  21. void consumir_dato( int dato ){
  22.  
  23. cout << "dato recibido: " << dato << endl ;
  24. }
  25.  
  26.  
  27.  
  28. void * productor( void * ){
  29.  
  30. for( unsigned i = 0 ; i < num_items ; i++ ){
  31. if (primera_libre == tam_vec)
  32. primera_libre = 0;
  33. int dato = producir_dato() ;
  34. sem_wait (&puede_escribir);
  35. vector[primera_libre] = dato ;
  36. primera_libre++;
  37. sem_post(&puede_leer);
  38. }
  39. }
  40.  
  41. void * consumidor( void * ){
  42.  
  43. for( unsigned i = 0 ; i < num_items ; i++ ){
  44. int dato ;
  45. if (primera_ocupada == tam_vec)
  46. primera_ocupada = 0;
  47. sem_wait (&puede_leer);
  48. dato = vector[primera_ocupada] ;
  49. primera_ocupada++ ;
  50. sem_signal(&puede_escribir);
  51. consumir_dato( dato ) ;
  52. }
  53. }
  54.  
  55. int main(){
  56. pthread_t consumidora, productora;
  57. sem_init( &puede_leer, 0, 1);
  58. sem_init( &puede_escribir, 0 , 0);
  59.  
  60. pthread_create(&productora, NULL, productor, NULL);
  61. pthread_create(&consumidora, NULL, consumidor, NULL);
  62.  
  63. pthread_join( productora, NULL ) ;
  64.   pthread_join( consumidora, NULL ) ;
  65.  
  66. sem_destroy( &puede_escribir );
  67. sem_destroy( &puede_leer );
  68. }
3  Programación / Programación C/C++ / Necesito ayuda urgente con hebras/hilos y semaforos en: 26 Octubre 2013, 14:54 pm
El problema basicamente es:

Código
  1. #include <iostream>
  2. #include <pthread.h>
  3. using namespace std ;
  4. void* proc1( void* arg )
  5. { for( unsigned long i = 0 ; i < 5000 ; i++ )
  6. cout << "hebra 1, i == " << i << endl ;
  7. return NULL ;
  8. }
  9. void* proc2( void* arg )
  10. { for( unsigned long i = 0 ; i < 5000 ; i++ )
  11. cout << "hebra 2, i == " << i << endl ;
  12. return NULL ;
  13. }
  14. int main()
  15. {
  16. pthread_t hebra1, hebra2 ;
  17. pthread_create(&hebra1,NULL,proc1,NULL);
  18. pthread_create(&hebra2,NULL,proc2,NULL);
  19. pthread_exit(NULL); // permite continuar a hebra1 y hebra2
  20. }


Y me da este error:
Código
  1. /tmp/ccPPYPph.o: En la función `main':
  2. ej.cpp:(.text+0xd7): referencia a `pthread_create' sin definir
  3. ej.cpp:(.text+0xf2): referencia a `pthread_create' sin definir
  4. collect2: error: ld devolvió el estado de salida 1
  5.  

Por lo que pienso que es que no me funciona el pthread.h. El ejercicio está bien porque es un ejemplo de los apuntes.

Ayuda por favor, necesito una respuesta rápido.

Nota: tampoco me funciona los semaforos asi que si hay que instalar un paquete o algo decidmelo por favor.
4  Sistemas Operativos / GNU/Linux / Error: Cannot retrieve repository metadata (repomd.xml) for repository: fedora. en: 17 Octubre 2013, 18:39 pm
He estado buscando por internet y aparece un montón de gente con este error pero las soluciones que ponen no me funcionan. Por favor ayudenme.

fedora.repo:

Código
  1. [fedora]
  2. name=Fedora $releasever - $basearch
  3. failovermethod=priority
  4. baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
  5. #mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
  6. enabled=1
  7. metadata_expire=7d
  8. gpgcheck=1
  9. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
  10.  
  11. [fedora-debuginfo]
  12. name=Fedora $releasever - $basearch - Debug
  13. failovermethod=priority
  14. baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/debug/
  15. #mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-debug-$releasever&arch=$basearch
  16. enabled=0
  17. metadata_expire=7d
  18. gpgcheck=1
  19. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
  20.  
  21. [fedora-source]
  22. name=Fedora $releasever - Source
  23. failovermethod=priority
  24. baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/
  25. #mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-source-$releasever&arch=$basearch
  26. enabled=0
  27. metadata_expire=7d
  28. gpgcheck=1
  29. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
  30.  

fedora-updates.repo:

Código
  1. [updates]
  2. name=Fedora $releasever - $basearch - Updates
  3. failovermethod=priority
  4. baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/
  5. #mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
  6. enabled=1
  7. gpgcheck=1
  8. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
  9.  
  10. [updates-debuginfo]
  11. name=Fedora $releasever - $basearch - Updates - Debug
  12. failovermethod=priority
  13. baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/debug/
  14. #mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&arch=$basearch
  15. enabled=0
  16. gpgcheck=1
  17. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
  18.  
  19. [updates-source]
  20. name=Fedora $releasever - Updates Source
  21. failovermethod=priority
  22. baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/SRPMS/
  23. #mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=updates-released-source-f$releasever&arch=$basearch
  24. enabled=0
  25. gpgcheck=1
  26. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
  27.  
  28.  
5  Sistemas Operativos / GNU/Linux / Ayuda con partición Ubuntu en: 13 Octubre 2013, 11:27 am
Mi problema consiste en que estoy intentando instalar ubuntu 12.04 junto a windows 7
y para ello he dejado un espacio de 10GB sin asignar para la partición de Ubuntu, pero cuando lo intento instalar con la opción instalar junto a windows 7, no me deja, a mi parecer porque no tiene suficiente espacio. Pero por lo que he visto por internet 10 GB debería ser suficiente, así que no se.
6  Programación / Programación C/C++ / Como usar cin.ignore() en: 12 Mayo 2013, 17:45 pm
Alguien me explica como usar cin.ignore(). Ya se que consta de 2 parametros. por ejemplo:

cin.ignore(1000,'\n') ---> Esto hace que ignore todos los caracteres hasta que encuentra un salto de linea.

Pero lo que quiero que me expliquen (si es posible) es como usarlo para que ignore una serie de caracteres determinados. Por ejemplo:

Si creo una cadena con cin.getline(c,1000,EOF) dentro e esa cadena como hago para "ignorar" linea que empieze por '#', osea, una serie de de caracteres que empiece con el caracter '#' y acabe con '\n'.

Gracias.
7  Programación / Programación C/C++ / Duda con las clases [c++] en: 19 Abril 2013, 18:49 pm
¿como uso una funcion de una clase dentro de otra?
8  Programación / Programación C/C++ / Ayuda con las clases. en: 19 Enero 2013, 17:11 pm
Alguien me puede decir que le pasa a mi código. Cuando intento crear una variable de tipo Segmento me da error y no se por qué. Además de si alguien ve algo que no está del todo bien que lo diga.

#include <iostream>
#include <cmath>

using namespace std;

class Punto {
    private:
        double ejex, ejey;
    public:
        Punto();
        Punto(double x, double y);
        void SetP(double x, double y);
        double GetX();
        double GetY();
        double distanciacon(Punto b);
};

Punto::Punto(double x, double y)
{
    (*this).ejex=x;
    (*this).ejey=y;
}

Punto::Punto()
{
    (*this).ejex=0;
    (*this).ejey=0;
}

void Punto::SetP(double x, double y)
{
    (*this).ejex=x;
    (*this).ejey=y;
}

double Punto::GetX()
{
    return ejex;
}

double Punto::GetY()
{
    return ejey;
}

double Punto::distanciacon(Punto b)
{

    return sqrt(pow((*this).ejex-b.ejex,2)+pow((*this).ejey-b.ejey,2));
}

class Segmento{
    private:
        Punto p1, p2;

    public:
        Segmento(Punto punto1, Punto punto2);
        void SetS(Punto punto1, Punto punto2);
        Punto GetP1();
        Punto GetP2();
};


Segmento::Segmento(Punto punto1, Punto punto2)
{
    (*this).p1=punto1;
    (*this).p2=punto2;
}

void Segmento::SetS(Punto punto1, Punto punto2)
{
    (*this).p1=punto1;
    (*this).p2=punto2;
}

Punto Segmento::GetP1()
{
    return p1;
}

Punto Segmento::GetP2()
{
    return p2;
}

int main()
{
    Punto p1, p2;
    double x1, x2, y1, y2;
    cout << "Introduce un puntos: ";
    cin >> x1 >> y1;
    cout << "Introduce otro punto: ";
    cin >> x2 >> y2;

    p1.SetP(x1,y1);
    p2.SetP(x2,y2);

    cout << "Primer punto: " << "(" << p1.GetX() << "," << p1.GetY() << ")" << endl;
    cout << "Segundo punto: " << "(" << p2.GetX() << "," << p2.GetY() << ")" << endl;
    cout << "Distancia entre los dos puntos: " << p1.distanciacon(p2) << endl;


    Segmento s1;



Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines