J'ai quelques questions sur le sujet, des virgules par rapport à l'espace, dans les paramètres de délimitation.cmd- virgule pour séparer les paramètres Comparé à l'espace?
Ce sont des questions que les programmeurs C familiers avec l'invite cmd, peut être en mesure de jeter un peu de lumière sur ..
Je sais que lorsque vous faites
c:\>program a b c
il y a 4 paramètres [0]=program
[1]=a
[2]=b
[3]=c
Selon hh ntcmds.chm
concepts ..
aperçu Shell
; and , are used to separate parameters
; or , command1 parameter1;parameter2 Use to separate command parameters.
Je vois dir a,b
donne le même résultat que dir a b
mais
c:\>program a,b,c
donne des paramètres [0] = programme [1] = a, b, c
Alors en faire? ou tout? les commandes windows utilisent; et , ? et est cette interprétation dans le code de chaque commande, ou fait par le shell comme avec l'espace?
Et si c'est dans le code de chaque commande .. comment saurais-je qui le faire? Je remarque que la documentation de explorer.exe mentionne la virgule, par exemple. vous pouvez le faire explorer /e,.
mais DIR /? ne le mentionne pas, mais peut l'utiliser. Et un programme c typique ne prend pas, en tant que délimiteur du tout .. Ainsi est-il le cas que le shell n'utilise pas de virgule pour délimiter, il utilise l'espace. Et les commandes de Windows qui le font, le font car elles sont écrites (toutes?) Pour délimiter les paramètres que le shell leur a donné quand les virgules sont utilisées?
Comment pouvez-vous dire ce qui est fait par le shell, et ce qui est fait par le runtime MS C ou la lib standard? J'ai un Windows c prog avec juste #include En haut, et le code pour afficher argv. compilé avec gcc.I ne peut pas voir un moyen que je peux voir quel "paramétrage!" est fait à partir du shell et qui est automatique de la bibliothèque standard.Aussi, je remarque que la virgule ne fonctionne pas pour les programmes externes xcopy ou telnet. Je pense que je l'ai vu pour Rundll32. Je suppose que c'est juste un peu.Peut-être pas une fonction dans une bibliothèque disponible publiquement! Peut-être juste des programmes ext exceptionnels faisant cmd cmd.exe cmd.exe –
barlop
Tout est fait par l'exécution de MS C sauf la fonctionnalité du shell. La fonctionnalité Shell inclut des choses comme la redirection ('<', '>', etc. '>>'), la tuyauterie ('|'), le contrôle de flux ('&&' et '||') et l'échappement ('^'). Comme je l'ai dit, je n'ai jamais vu un programme utilisant ',' sur la ligne de commande, donc je ne suis pas surpris que cette copie et telnet ne le supportent pas. –
suggérez-vous ms c runtime délimite espaces et citations? ou est-ce encore shell? et si c'est ms c runtime, pouvez-vous le prouver? Je ne vois pas comment votre deuxième point de balle distingue unix et le cos 'de windows ne serait pas un shell d'unix également d'analyser des redirections et des pipes. – barlop