Pregunta

Tengo una duda @ el almacenamiento de los argumentos de línea de comandos.

myprog.exe -cfgfile myconfig.cfg

se pasan

args de comandos cuando el proceso se crea por lo que están fuera del proceso strored?

donde OS almacena?

¿Fue útil?

Solución

Para las ventanas, los argumentos de línea de comando se guardan en el bloque de entorno de proceso ( PEB ), que se asigna en el espacio de direcciones de proceso de usuario cuando se crea el proceso.

Puede leer Windows Internals para muchos más detalles. He aquí un fragmento del Capítulo 5 -. Los procesos, hilos, y el empleo

Yo asumiría que es el mismo para las versiones de Unix. Este necesidades de datos para estar en la memoria del proceso, de modo que se puede acceder por el propio proceso.

Otros consejos

Depende del sistema operativo y, posiblemente, el idioma. Una buena respuesta C-céntrico es que el sistema operativo crea el espacio de proceso (incluyendo la carga del código, la creación de la pila y pila, etc.). Luego se pone el argumento del vector de línea de comandos en un lugar, y copia la dirección del vector argumento a 'argv' en la pila, y el recuento de las palabras a 'argc'.

Sólo después de estas tareas se realizan hace el sistema operativo permite la ejecución del proceso.

Los argumentos de línea de comandos se almacenan en el espacio de memoria de la aplicación. Exactamente donde se diferencia de OS a OS, yo creo que es por lo general permanece en la parte inferior de la pila. El código que pone existe en el código fuente del kernel para Exec en sistemas operativos tipo Unix, no sabe dónde sería en Windows (no es que se puede ver la fuente de todos modos). El código de tiempo de ejecución C (aquí es donde "CRT" viene de) realiza argv y argc de la pila y luego llama principal. Si usted está interesado en aprender más acerca de cómo un ejecutable se inicia en Linux, este trabajo de Ulrich Drepper (glibc mantenedor) pueden ser de valor: http://people.redhat.com/drepper/dsohowto.pdf

en Linux: argumentos de línea de comandos se almacenan en obtener pila. Dont confundir variable ambiental con argumentos de línea de comandos, el espacio de direcciones del proceso tener un área de memoria independiente para las variables ambientales

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top