Tengo algunas preguntas sobre el tema, de comas en comparación con el espacio, en la delimitación de parámetros.cmd- coma para separar los parámetros ¿Comparado con el espacio?
Ellos son preguntas que los programadores de C familiarizadas con el cmd, pueden ser capaces de arrojar alguna luz sobre ..
Sé que cuando se hace
c:\>program a b c
hay 4 parámetros [0]=program
[1]=a
[2]=b
[3]=c
Según hh ntcmds.chm
conceptos ..
Shell visión general
; and , are used to separate parameters
; or , command1 parameter1;parameter2 Use to separate command parameters.
veo dir a,b
da el mismo resultado que dir a b
pero
c:\>program a,b,c
da parámetros [0] = programa [1] = a, b, c
¿Entonces algo? o todo? uso de comandos de windows; y,? y es esa interpretación dentro del código de cada comando, o hecha por el caparazón como con espacio?
Y si está en el código de cada comando ... ¿cómo sabría que lo hago? Noté que la documentación de explorer.exe menciona la coma, p. Ej. usted puede hacer explorer /e,.
pero DIR /? no lo menciona, pero puede usarlo. Y un programa c típico no toma, como un delimitador en absoluto ... Entonces, es el caso que el shell no usa coma para delimitar, usa espacio. Y los comandos de Windows que sí lo hacen, lo hacen porque están (¿todos?) Escritos para delimitar los parámetros que el shell les ha dado más cuando se usan comas.
¿Cómo se puede saber qué hace el shell y qué hace MS C runtime o standard lib? Tengo un programa para Windows c con solo #include En la parte superior, y código para mostrar argv. compilado con gcc. No puedo ver una manera de ver qué "parametrización" se realiza desde el shell y cuál es automática desde la biblioteca estándar. También, noto que la coma no funciona para los programas externos xcopy o telnet. Creo que lo he visto para rundll32. Supongo que es solo algo. Tal vez no sea una función en una biblioteca disponible públicamente. Tal vez solo programas de extensión excepcionales que lo hacen apin cmds internos de cmd.exe. –
barlop
Todo lo hace el tiempo de ejecución de MS C excepto la funcionalidad de shell. La funcionalidad de Shell incluye cosas como redirección ('<', '>', etc. '>>'), tuberías ('|'), control de flujo ('&&' y '||') y escape ('^'). Como digo, nunca he visto un programa que use ',' en la línea de comandos, así que no me sorprende que copy y telnet no lo admitan. –
¿Está sugiriendo que ms c runtime delimite espacios y comillas? o es eso todavía cáscara? y si es ms c tiempo de ejecución, ¿puedes probarlo? No veo cómo su segundo punto de vista distingue a Unix y Windows porque el shell de Unix tampoco analizaría los redireccionamientos y las tuberías. – barlop