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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 ... 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [50] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ... 122
491  Programación / Programación C/C++ / Re: Pregunta sobre señales y semaforos en: 2 Septiembre 2010, 18:08 pm
Citar
¿pero si se quita sigue funcionando el programa igualmente?

Por supuesto, pero se utiliza para dar un margen mínimo de tiempo. Es simplemente una precaución que no debería molestar al menos que el caso amerite ahorrar tiempo de donde sea.

Citar
Código
  1. waitreturn = wait (&status);
  2. while ( (waitreturn !=-1) || (waitreturn == -1 && errno == EINTR))
  3. waitreturn = wait (&status);

Wait retorna el pid del hijo que termine. Luego dice que retorna 0 ¿si no retorna ninguno y ninguno esta disponible? No se que quiere decir eso... y luego -1 si hay error.

¿esta esperando procesos hijos hasta que wait retorne -1 y errno != EINTR? ¿por que?

wait suspende la ejecución del proceso actual en pos de esperar que un hijo finalice, una señal sea entregada, o se decida finalizar el proceso actual.
En este caso estas interpretando mal el código, el significado seria:

Mientras wait no retorne error O (wait retorne error Y errno este establecido como EINTR)

Tal que EINTR establecido implica:

Citar
EINTR
    if WNOHANG was not set and an unblocked signal or a SIGCHLD was caught.


Citar
El otro tampoco lo entiendo... ¿childpid que toma 0 o 1 y lo compara con el wait?
Bueno a ver si puedes aclarar esto

childpid==0 equivale a decir "Soy un proceso hijo". Mientras childpid != wait.

Relaciona eso con el valor de retorno de wait:

Citar
The process ID of the child which exited, or zero if WNOHANG was used and no child was available, or -1 on error (in which case errno is set to an appropriate value).

Saludos
492  Programación / Programación C/C++ / Re: Duda con %i en: 2 Septiembre 2010, 17:19 pm
Si que hay riesgo, es tal como dice EI. Acceder a una dirección invalida produce comportamiento indefinido, tales como corrupción de datos, errores en tiempo de ejecución, etc.

Por ejemplo:

Código
  1. printf("%s");


Saludos
493  Programación / Programación C/C++ / Re: duda con gethostbyname sockets en: 2 Septiembre 2010, 16:58 pm
Revisa el ejemplo de la MSDN. Si todavía quedan dudas luego de la lectura, postealas nuevamente.

Saludos
494  Programación / Programación C/C++ / Re: ERROR_INVALID_ADDRESS al usar VirtualAllocEx con una dirección fija en: 2 Septiembre 2010, 16:32 pm
De nada ;D. El programa del screen es Cheat Engine que para este caso vale perfectamente, pero para el resto lo ideal es WinDBG.

Con Cheat Engine: Memory view + (ctrl +R)

Con WinDBG: !address -summary
                      !address Addr
  
Saludos!                    
495  Programación / Programación C/C++ / Re: ERROR_INVALID_ADDRESS al usar VirtualAllocEx con una dirección fija en: 2 Septiembre 2010, 00:34 am
VirtualAlloc mas direcciones hardcodeadas, no es la mejor combinación. ;D

Cuidado con los 0 de mas y de menos en las direcciones, que a simple vista ya se ven errores:

Código
  1. if(Buffer.State==MEM_COMMIT)
  2. {
  3. if(!VirtualFree((LPVOID)0x0040000,0x1000,MEM_DECOMMIT))

0x0040000!=0x00400000

Código
  1. case MEM_RESERVE|MEM_COMMIT:

Ese case esta de mas.

Código
  1. VirtualFreeEx(GetCurrentProcess(),(LPVOID)0x00400000,0,MEM_DECOMMIT);

Si utilizas decommit en una región de memoria sin utilizar release, esta cambia su estado a reservado , o sea, lista para asignar (Suponiendo que sea posible).
Por ende, la llamada a VirtualAllocEx va a fallar del modo que estas usando, porque estas intentando reservar una dirección que ya esta reservada. Asignarla es lo que debería seguir.

Código
  1. VirtualAllocEx(GetCurrentProcess(),ADR,0x1000,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
  2.  



Antes de seguir, busca los artículos de Mark Russinovich acerca de todo esto ya que explican todo con lujo de detalle. Y sobre todo atención a los "remarks" de la documentación de cada API, porque es eso lo que te esta trayendo dramas. ;D.

Cabe destacar también, que el proceso real que debería realizarse es mucho mas largo, porque esto vale como ejemplo pero en una aplicacion no podes dejar pasar cosas como las posibles medidas de protección de cada región.

Tengo por acá un código que quizas te pueda servir ya que realiza lo que necesitas, es bastante largo y pesado pero de seguro sacas en limpio lo necesario. En un rato lo busco y si lo encuentro te lo mando por pm.

Saludos
496  Programación / Programación C/C++ / Re: será error del compilador? en: 1 Septiembre 2010, 23:19 pm
Podría ser por varios motivos, difícil de saber si ni siquiera la reinstalación ha solucionado el problema.

Lo que te recomendaría es que pruebes un entorno de trabajo mas estable como Code::Blocks.
497  Programación / Programación C/C++ / Re: Problema con programa... en: 1 Septiembre 2010, 02:56 am
Código
  1. #include <iostream>
  2. int main()// Valor de retorno debe ser un entero.
  3. {
  4. using namespace std;
  5.  
  6. int segundos;
  7. cout << "Ingrese una cantidad de segundos" << endl;
  8. cin >> segundos;
  9. cout << "Ingresaste :";
  10. cout << segundos << endl;
  11. cout << "Presione enter para continuar." << endl;
  12. cin.ignore();//Descartas datos innecesarios que puedan existir en el buffer
  13. cin.get();//Esperas que se presione una tecla.
  14. return 0;
  15. }

Utiliza el buscador del foro, podrás encontrar varios hilos que explican distintas formas de hacer pausas, que debería usarse, que no, etc.

Saludos
498  Programación / Programación C/C++ / Re: ERROR_INVALID_ADDRESS al usar VirtualAllocEx con una dirección fija en: 31 Agosto 2010, 23:41 pm
Es necesario utilizar una dirección fija que posiblemente pueda no estar libre, o solo es por probar?

Utiliza VirtualQuery para chequear el estado de la región, o en su defecto VADUMP.

Saludos
499  Programación / Programación C/C++ / Re: rand() algo prohibido en: 31 Agosto 2010, 23:30 pm
Ademas de lo que dijo rob1104, cabe destacar que la constante RAND_MAX depende de la plataforma.


He borrado y reportado algunos mensajes. Si no saben comportarse por favor, no posteen.

500  Programación / Programación C/C++ / Re: Consulta para los que saben (es para orientarme) en: 31 Agosto 2010, 00:19 am
Citar
Se aprende sin ir a la universidad?

Depende el esfuerzo y las ganas. Las bases del lenguaje se aprenden de manera mas fácil en la universidad debido a la metodología organizada de enseñanza y el estudio obligado para rendir los exámenes. Pero en definitiva, depende de que universidad, y depende la persona. Algunas personas aprenden mas rápido en sus casas yendo a su ritmo que teniendo que atenerse al método del establecimiento educativo.

Pero en fin, mientras se tenga el material adecuado y ganas, se puede aprender en cualquier lado.

Citar
Se llega leyendo tutoriales, viendo videos, haciendo pruebas?

Seguro, pero mas que tutoriales y vídeos, lo ideal es un buen libro que explique desde cero.

Citar
La matematica es la 1° Herramienta para triunfar?

Depende, en general tener unos buenos conocimientos en matemática implica mas capacidad para resolver problemas y mejores ideas a la hora de codificar algoritmos. Mal o bien, la matemática estimula bastante la capacidad resolutiva de una persona.
También es verdad que hay muchas áreas de programación donde la matemática necesaria es muy básica, así como también existen otras áreas donde la complejidad es otra y se necesita una base solida sobre algunos conceptos. Todo depende de lo que quieras hacer.

De cualquier manera, la matemática te ayuda en mayor o en menor medida en todas las áreas de la vida y por sobre todas las cosas la vas a necesitar si tenes pensado encaminarte a una carrera universitaria.

Saludos
Páginas: 1 ... 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [50] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ... 122
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines