exec – Comando Linux – Comando Unix

exec - Invocar subproceso (s) Sinopsis exec ? cambia ? arg ? arg ... ? Descripción Este comando trata sus argumentos como la especificación de uno o más subprocesos para ejecutar.

exec – Invocar subproceso (s)

Sinopsis

exec ? cambia ? arg ? arg … ?

Descripción

Este comando trata sus argumentos como la especificación de uno o más subprocesos para ejecutar. Los argumentos toman la forma de una canalización estándar de shell donde cada arg se convierte en una palabra de un comando, y cada comando distinto se convierte en un subproceso.

Si los argumentos iniciales para exec comienzan con , se tratan como modificadores de línea de comandos y no forman parte de la especificación de la canalización. Los siguientes interruptores son compatibles actualmente:

-keepnewline

Retiene una nueva línea final en la salida de la tubería. Normalmente, se eliminará una nueva línea final.

Marca el final de los interruptores. El argumento que sigue a este será tratado como el primer argumento incluso si comienza con un .

Si un arg (o un par de arg ‘s) tiene uno de los formularios que se describen a continuación, exec lo utiliza para controlar el flujo de entrada y salida entre los subprocesos. Tales argumentos no se pasarán a los subprocesos. En formas como « < fileName » fileName puede estar en un argumento separado de « <'' o en el mismo argumento sin espacio intermedio (es decir, ` `< fileName »).

El |

Separa comandos distintos en la tubería. La salida estándar del comando anterior se canalizará a la entrada estándar del siguiente comando.

| &

Separa comandos distintos en la tubería. Tanto la salida estándar como el error estándar del comando anterior se canalizarán a la entrada estándar del siguiente comando. Esta forma de redireccionamiento anula formas como 2> y> &.

< fileName

El archivo nombrado por fileName se abre y se utiliza como entrada estándar para el primer comando en la tubería.

<@ ID de archivo

FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior a abrir . Se utiliza como entrada estándar para el primer comando en la tubería. FileId debe haberse abierto para leer.

<< valor

El Valor se pasa al primer comando como su entrada estándar.

> nombreDeArchivo

La salida estándar del último comando se redirige al archivo llamado fileName , sobrescribiendo su contenido anterior.

2> nombreDeArchivo

El error estándar de todos los comandos en la tubería se redirige al archivo llamado fileName , sobrescribiendo su contenido anterior.

> & nombreDeArchivo

Tanto la salida estándar del último comando como el error estándar de todos los comandos se redirigen al archivo llamado fileName , sobrescribiendo su contenido anterior.

>> nombreDeArchivo

La salida estándar del último comando se redirige al archivo llamado fileName , añadiéndole en lugar de sobrescribirlo.

2 >> nombreDeArchivo

El error estándar de todos los comandos en la tubería se redirige al archivo llamado fileName , agregándolo en lugar de sobrescribirlo.

>> & nombreDeArchivo

Tanto la salida estándar del último comando como el error estándar de todos los comandos se redirigen al archivo llamado fileName , añadiéndolo en lugar de sobrescribirlo.

> @ ID de archivo

FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior a abrir . La salida estándar del último comando se redirige al archivo de fileId , que debe haberse abierto para escribir.

2> @ ID de archivo

FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior a abrir . El error estándar de todos los comandos en la tubería se redirige al archivo de fileId . El archivo debe haber sido abierto para escritura.

> & @ ID de archivo

FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior a abrir . Tanto la salida estándar del último comando como el error estándar de todos los comandos se redirigen al archivo fileId . El archivo debe haber sido abierto para escritura.

Si la salida estándar no se ha redirigido, el comando exec devuelve la salida estándar del último comando en la tubería.Si alguno de los comandos en la tubería sale anormalmente o se mata o suspende, entonces exec devolverá un error y el mensaje de error incluirá la salida de la tubería seguida de mensajes de error que describen las terminaciones anormales; la variable errorCode contendrá información adicional sobre la última terminación anormal encontrada. Si alguno de los comandos escribe en su archivo de error estándar y ese error estándar no se redirige, entonces exec devolverá un error; el mensaje de error incluirá la salida estándar de la tubería, seguida de mensajes sobre terminaciones anormales (si las hay), seguida de la salida de error estándar.

Si el último carácter del resultado o mensaje de error es una nueva línea, entonces ese carácter normalmente se elimina del resultado o mensaje de error. Esto es consistente con otros valores de retorno de Tcl, que normalmente no terminan con nuevas líneas. Sin embargo, si se especifica -keepnewline , la nueva línea final se conserva.

Si la entrada estándar no se redirige con « <'' o `` << '' o `` <@ '', la entrada estándar para el primer comando en la tubería se toma de la entrada estándar actual de la aplicación.

Si el último arg es « & », la tubería se ejecutará en segundo plano. En este caso, el comando exec devolverá una lista cuyos elementos son los identificadores de proceso para todos los subprocesos en la tubería. La salida estándar del último comando en la tubería irá a la salida estándar de la aplicación si no se ha redirigido, y la salida de error de todos los comandos en la tubería irá al archivo de error estándar de la aplicación a menos que se redirija.

La primera palabra en cada comando se toma como el nombre del comando; la sustitución de tilde se realiza en él, y si el resultado no contiene barras inclinadas, entonces los directorios en la variable de entorno PATH buscan un ejecutable por el nombre dado. Si el nombre contiene una barra oblicua, debe referirse a un ejecutable accesible desde el directorio actual. No se realizan expansiones « glob » u otras sustituciones similares a las de los argumentos a los comandos.

Problemas de portabilidad

Windows (todas las versiones)

Leer o escribir en un socket, usando la notación « @ fileId », no funciona. Al leer desde un socket, una aplicación DOS de 16 bits se bloqueará y una aplicación de 32 bits regresará inmediatamente con el final del archivo. Cuando cualquier tipo de aplicación escribe en un socket, la información se envía a la consola, si hay una presente, o se descarta.

El widget de texto de la consola Tk no proporciona capacidades de E/S estándar reales. Bajo Tk, al redirigir desde la entrada estándar, todas las aplicaciones verán un fin de archivo inmediato; la información redirigida a salida estándar o error estándar será descartada.

Las barras inclinadas hacia adelante o hacia atrás se aceptan como separadores de ruta para los argumentos de los comandos Tcl. Al ejecutar una aplicación, el nombre de ruta especificado para la aplicación también puede contener barras inclinadas hacia adelante o hacia atrás como separadores de ruta. Sin embargo, tenga en cuenta que la mayoría de las aplicaciones de Windows aceptan argumentos con barras diagonales solamente como delimitadores de opciones y barras diagonales inversas solo en las rutas. Cualquier argumento a una aplicación que especifique un nombre de ruta con barras diagonales no se convertirá automáticamente para usar el carácter de barra diagonal inversa. Si un argumento contiene barras diagonales como separador de ruta, puede reconocerse o no como un nombre de ruta, según el programa.

Además, cuando se llama a una aplicación DOS o Windows 3.X de 16 bits, todos los nombres de ruta deben usar el formato de ruta corto y críptico (por ejemplo, usar « applba ~ 1.def » en lugar de « applbakery.default » )

Dos o más barras inclinadas hacia adelante o hacia atrás en una fila en una ruta se refieren a una ruta de red. Por ejemplo, una simple concatenación del directorio raíz c:/ con un subdirectorio /windows/system arrojará c: // windows/system (dos barras juntas), que se refiere al punto de montaje llamado sistema en la máquina llamada ventanas (y se ignora c:/), y no es equivalente a c:/windows/system , que describe un directorio en la computadora actual. El comando unión de archivos debe usarse para concatenar componentes de ruta.

Windows NT

Al intentar ejecutar una aplicación, exec primero busca el nombre tal como se especificó. Luego, en orden, .com , .exe y .bat se agregan al final del nombre especificado y se busca por más tiempo nombre. Si no se especificó un nombre de directorio como parte del nombre de la aplicación, los siguientes directorios se buscan automáticamente en orden cuando se intenta localizar la aplicación:

El directorio desde el que se cargó el ejecutable Tcl.
El directorio actual.
El directorio del sistema de Windows NT de 32 bits.
El directorio del sistema de Windows NT de 16 bits.
El directorio de inicio de Windows NT.
Los directorios enumerado en el camino.

Para ejecutar los comandos integrados de shell como dir y copiar , la persona que llama debe anteponer « cmd.exe/c » al deseado mando.

Windows 95

Al intentar ejecutar una aplicación, exec primero busca el nombre tal como se especificó. Luego, en orden, .com , .exe y .bat se agregan al final del nombre especificado y se busca por más tiempo nombre. Si no se especificó un nombre de directorio como parte del nombre de la aplicación, los siguientes directorios se buscan automáticamente en orden cuando se intenta localizar la aplicación:

El directorio desde el que se cargó el ejecutable Tcl.
El directorio actual.
El directorio del sistema de Windows 95.
El directorio de inicio de Windows 95.
Los directorios enumerados en la ruta.

Para ejecutar los comandos incorporados de shell como dir y copiar , la persona que llama debe anteponer « command.com/c » al deseado mando.

Una vez que una aplicación de DOS de 16 bits ha leído la entrada estándar de una consola y luego se cierra, todas las aplicaciones de DOS de 16 bits verán la entrada estándar como ya cerrada. Las aplicaciones de 32 bits no tienen este problema y se ejecutarán correctamente, incluso después de que una aplicación DOS de 16 bits piense que la entrada estándar está cerrada. No hay una solución conocida para este error en este momento.

La redirección entre el dispositivo NUL: y una aplicación de 16 bits no siempre funciona. Al redirigir desde NUL: , algunas aplicaciones pueden bloquearse, otras obtendrán un flujo infinito de bytes « 0x01 », y algunas realmente obtendrán correctamente el final inmediato del archivo; el comportamiento parece depender de algo compilado en la aplicación misma. Al redirigir más de 4K o menos a NUL: , algunas aplicaciones se bloquearán. Los problemas anteriores no suceden con las aplicaciones de 32 bits.

Todas las aplicaciones DOS de 16 bits se ejecutan sincrónicamente. Toda la entrada estándar de una tubería a una aplicación DOS de 16 bits se recopila en un archivo temporal; el otro extremo de la tubería debe estar cerrado antes de que la aplicación DOS de 16 bits comience a ejecutarse. Todos los resultados o errores estándar de una aplicación DOS de 16 bits a una tubería se recopilan en archivos temporales; la aplicación debe finalizar antes de que los archivos temporales se redirijan a la siguiente etapa de la canalización. Esto se debe a una solución alternativa para un error de Windows 95 en la implementación de tuberías, y es cómo el shell estándar de Windows 95 DOS maneja las tuberías por sí mismo.

Ciertas aplicaciones, como command.com , no deben ejecutarse de forma interactiva. Las aplicaciones que acceden directamente a la ventana de la consola, en lugar de leer desde su entrada estándar y escribir en su salida estándar, pueden fallar, bloquear Tcl o incluso bloquear el sistema si su propia ventana de consola privada no está disponible para ellos.

Macintosh

El comando exec no está implementado y no existe en Macintosh.

Unix

El comando exec es completamente funcional y funciona como se describe.

Ver también

error (n), abierto (n)

Palabras clave

ejecutar, canalización, redirección, subproceso

Use el comando man (% man ) para ver cómo se usa un comando en su computadora en particular.

Rate article
labsfabs.com
Add a comment