exec - invocar subproceso (es)
Sinopsis
exec? interruptores ? 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 tubería 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 paraexec Empezar con- luego se tratan como interruptores de línea de comando y no forman parte de la especificación de canalización. Los siguientes interruptores son compatibles actualmente:
-mantener en línea
Mantiene 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 éste será tratado como el primero arg incluso si comienza con una-.
Si una arg (o par de arg 's) tiene una de las formas descritas a continuación, luego es utilizada porexec para controlar el flujo de entrada y salida entre los subprocesos. Tales argumentos no serán pasados al subproceso (es). En formas tales como `` < nombre del archivo '' nombre del archivo puede estar en un argumento separado de `` <'' o en el mismo argumento sin espacio intermedio (es decir, `` < nombre del archivo '').
|
Separa los comandos distintos en la tubería. La salida estándar del comando anterior se canalizará a la entrada estándar del siguiente comando.
|&
Separa los 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 redirección anula las formas como 2> y> &.
< nombre del archivo
El archivo nombrado por nombre del archivo se abre y se utiliza como la entrada estándar para el primer comando en la canalización.
<@ fileId
FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior aabierto. Se utiliza como entrada estándar para el primer comando en la canalización. FileId debe haber sido abierto para la lectura.
<< valor
Valor Se pasa al primer comando como su entrada estándar.
> nombre del archivo
La salida estándar del último comando se redirige al archivo denominado nombre del archivo , sobrescribiendo sus contenidos anteriores.
2> nombre del archivo
El error estándar de todos los comandos en la tubería se redirige al archivo denominado nombre del archivo , sobrescribiendo sus contenidos anteriores.
>& nombre del archivo
Tanto la salida estándar del último comando como el error estándar de todos los comandos se redirigen al archivo denominado nombre del archivo , sobrescribiendo sus contenidos anteriores.
>> nombre del archivo
La salida estándar del último comando se redirige al archivo denominado nombre del archivo , añadiéndolo en lugar de sobrescribirlo.
2>> nombre del archivo
El error estándar de todos los comandos en la tubería se redirige al archivo denominado nombre del archivo , añadiéndolo en lugar de sobrescribirlo.
>>& nombre del archivo
Tanto la salida estándar del último comando como el error estándar de todos los comandos se redirigen al archivo denominado nombre del archivo , añadiéndolo en lugar de sobrescribirlo.
>@ fileId
FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior aabierto. La salida estándar del último comando se redirige a fileId El archivo, que debe haber sido abierto para escribir.
2>@ fileId
FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior aabierto. El error estándar de todos los comandos en la tubería se redirige a fileId archivo de. El archivo debe estar abierto para escritura.
>&@ fileId
FileId debe ser el identificador de un archivo abierto, como el valor de retorno de una llamada anterior aabierto. Tanto la salida estándar del último comando como el error estándar de todos los comandos se redirigen a fileId archivo de. El archivo debe estar abierto para escritura.
Si la salida estándar no ha sido redirigida, laexec comando devuelve la salida estándar del último comando en la tubería. Si alguno de los comandos en la tubería se cierra de forma anormal o se cancela o suspende, entoncesexec 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; lacódigo de error La variable contendrá información adicional sobre la última terminación anormal encontrada. Si alguno de los comandos se escribe en su archivo de error estándar y ese error estándar no se redirige, entoncesexec devolverá un error; El mensaje de error incluirá la salida estándar de la canalización, seguida de mensajes sobre terminaciones anormales (si las hay), seguidas 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-mantener en línea se especifica luego se retiene la nueva línea final.
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 ultimo arg es `` & '' entonces la tubería se ejecutará en segundo plano. En este caso elexeccomando 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 canalización 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 se dirigirá 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 tilde-substitución se realiza en ella, y si el resultado no contiene barras diagonales, los directorios en la variable de entorno PATH se buscarán un ejecutable con el nombre dado. Si el nombre contiene una barra diagonal, debe hacer referencia a un ejecutable accesible desde el directorio actual. No se realiza una expansión `` glob '' u otras sustituciones de tipo shell en los argumentos de los comandos.
Cuestiones de portabilidad
Windows (Todas las versiones)
Leyendo desde o escribiendo a un socket, usando el ``@ fileId '' notación, no funciona. Al leer desde un socket, se bloqueará una aplicación de DOS de 16 bits y una aplicación de 32 bits se devolverá inmediatamente con el final del archivo. Cuando cualquiera de los tipos de aplicación se escribe en un socket, la información se envía a la consola, si está presente, o se descarta.
El widget de texto de la consola Tk no proporciona capacidades de IO estándar reales. Bajo Tk, al redirigir desde la entrada estándar, todas las aplicaciones verán un final de archivo inmediato; La información redirigida a la salida estándar o error estándar se descartará.
Se aceptan barras diagonales hacia adelante o hacia atrás 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 delante 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 inclinadas solo como delimitadores de opciones y barras diagonales inversas solo en las rutas. Cualquier argumento de una aplicación que especifique un nombre de ruta con barras inclinadas 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 o no ser reconocido como un nombre de ruta, dependiendo del programa.
Además, al llamar a una aplicación de DOS o Windows 3.X de 16 bits, todos los nombres de ruta deben usar el formato de ruta corta y críptica (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 concatenación simple del directorio raíz.do:/ con un subdirectorio/ windows / system rendirác: // windows / system (dos barras unidas), que se refiere al punto de montaje llamadosistema en la máquina llamadaventanas (y eldo:/ se ignora), y no es equivalente ac: / windows / system, que describe un directorio en la computadora actual. losarchivo unirse El comando se debe utilizar para concatenar componentes de ruta.
Windows NT
Al intentar ejecutar una aplicación,exec Primero busca el nombre como fue especificado. Entonces, en orden,.com, .exey.murciélago se anexan al final del nombre especificado y busca el nombre más largo. 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 al intentar 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 enumerados en la ruta. Para ejecutar los comandos de shell incorporados comodir ydupdo, la persona que llama debe anteponer ``cmd.exe / c'' al comando deseado. Windows 95 Al intentar ejecutar una aplicación,exec Primero busca el nombre como fue especificado. Entonces, en orden,.com, .exey.murciélago se anexan al final del nombre especificado y busca el nombre más largo. 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 al intentar 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 de shell incorporados comodir ydupdo, la persona que llama debe anteponer ``command.com / c'' al comando deseado. 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 ejecutadas posteriormente verán que la entrada estándar ya está cerrada. Las aplicaciones de 32 bits no tienen este problema y se ejecutarán correctamente, incluso después de que una aplicación de DOS de 16 bits piense que la entrada estándar está cerrada. No hay ninguna solución conocida para este error en este momento. Redirección entre elNUL: Dispositivo y una aplicación de 16 bits no siempre funciona. Al redirigir desdeNUL:, algunas aplicaciones pueden colgarse, otras obtendrán un flujo infinito de bytes "0x01" y otras obtendrán un final de archivo inmediato; El comportamiento parece depender de algo compilado en la propia aplicación. Al redireccionar más de 4K o más aNUL:, algunas aplicaciones colgarán. Los problemas anteriores no ocurren con las aplicaciones de 32 bits. Todas las aplicaciones de DOS de 16 bits se ejecutan de forma síncrona. Toda la entrada estándar de una tubería a una aplicación de DOS de 16 bits se recopila en un archivo temporal; el otro extremo de la tubería debe cerrarse antes de que la aplicación de DOS de 16 bits comience a ejecutarse.Toda la salida estándar o error de una aplicación de DOS de 16 bits a una tubería se recopila 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 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 en sí. Ciertas aplicaciones, tales comocommand.com, no debe ser ejecutado interactivamente. 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 losexec El comando no está implementado y no existe en Macintosh. Unix losexec El comando es completamente funcional y funciona como se describe. error (n), abierto (n) ejecutar, canalización, redirección, subproceso Importante: Utilizar el hombre comando % hombre ) para ver cómo se usa un comando en su computadora en particular. Ver también
Palabras clave




