Ho alcune domande sull'argomento, di virgole rispetto allo spazio, nella delimitazione dei parametri.cmd- virgola per separare i parametri Rispetto allo spazio?
Sono domande che programmatori C familiarità con il richiamo del cmd, possono essere in grado di far luce su ..
So che quando si fa
c:\>program a b c
ci sono 4 parametri [0]=program
[1]=a
[2]=b
[3]=c
Secondo hh ntcmds.chm
concetti ..
Shell panoramica
; and , are used to separate parameters
; or , command1 parameter1;parameter2 Use to separate command parameters.
vedo dir a,b
fornisce lo stesso risultato come dir a b
ma
c:\>program a,b,c
dà parametri [0] = programma [1] = a, b, c
Quindi alcuni? o tutto? usano i comandi di Windows; e , ? ed è questa interpretazione nel codice di ogni comando, o fatta dalla shell come con lo spazio?
E se è nel codice di ogni comando .. come faccio a sapere che cosa lo fa? Noto che la documentazione di explorer.exe menziona la virgola, ad es. puoi fare explorer /e,.
ma DIR /? non lo menziona, ma può usarlo. E un tipico programma c non richiede affatto un delimitatore. Quindi è il caso che la shell non usi la virgola per delimitare, usa lo spazio. E i comandi di Windows che fanno, fanno in modo che siano (tutti?) Scritti per delimitare i parametri che la shell ha dato loro ulteriormente quando si usano le virgole?
Come si può sapere cosa viene fatto dalla shell e cosa viene eseguito dal runtime MS C o dalla lib standard? Ho un prog di windows c con solo #include Nella parte superiore, e il codice per la visualizzazione di argv. compilato con gcc.Non vedo un modo per vedere quale "parametrizzazione!" è fatta dalla shell e che è automatica dalla libreria standard. Inoltre, noto che la virgola non funziona per i programmi esterni xcopy o telnet. Penso di averlo visto per rundll32. Immagino che sia solo un po '. Forse non è una funzione in una libreria disponibile pubblicamente! Forse solo programmi ext eccezionali che fanno l'aping di cmd.exe interni di cmd.exe –
barlop
Tutto è fatto dal runtime di MS C tranne la funzionalità di shell. La funzionalità di shell include cose come il reindirizzamento ('<', '>', ecc. '>>'), piping ('|'), controllo di flusso ('&&' e '||') ed escaping ('^'). Come ho detto, non ho mai visto un programma che usa ',' sulla riga di comando, quindi non sono sorpreso che la copia e il telnet non lo supportino. –
stai suggerendo che ms c runtime delimita spazi e virgolette? o è ancora guscio? e se è runtime ms c, puoi provarlo? Non vedo come il tuo secondo punto elenco distingua unix e windows perché cos non unix shell gira anche redirect e pipe. – barlop