Nella base R, esistono 3 meccanismi principali per richiamare un comando di sistema: system
, system2
e shell
(che sembra condividere una manpage con system
). Nessuno di questi fornisce un modo cross-platform molto affidabile per eseguire un comando di sistema senza che una shell interferisca - e se interviene una shell, dobbiamo preoccuparci degli attacchi di shell injection, assicurarsi che il quoting sia corretto, e così via .Chiamata di sistema senza richiamare la shell in R
Alcune lingue forniscono l'accesso diretto alla funzione di livello C execvp
(ad es. Il meccanismo di Perl system PROGRAM LIST
), che è estremamente utile quando voglio assicurarmi che le stringhe in un array siano esattamente le stringhe che il sottoprocesso vedrà nei suoi argomenti , senza cercare la routine di quotazione appropriata per spazi bianchi incorporati, preventivi, ecc. e preoccuparsi di cosa faranno su piattaforme diverse e diverse versioni di shell.
C'è un meccanismo di chiamata di sistema no shell simile disponibile in R, forse in un pacchetto CRAN da qualche parte? E/o c'è qualche appetito per la creazione di un tale meccanismo se non ce n'è uno già?
Domanda molto interessante, e mi piacerebbe sapere la risposta. Tuttavia, così com'è, la domanda può essere interpretata come richiesta di uno strumento (fuori tema) o principalmente basata sull'opinione pubblica. Non voterò per chiudere, ma forse puoi applicare un po 'di editing per evitare questi risultati? – Andrie
@Andrie non è la prima domanda nell'ultimo paragrafo abbastanza? –
@PauloCardoso, come fa notare Andrie, la prima domanda nell'ultimo paragrafo * è * "chiedere uno strumento". Immagino che sarebbe facile scrivere un pacchetto con un pezzo di codice banale che ha appena passato una stringa a 'execvp' ... –