Встроенные нулевые предупреждения при вызове system2 с stdout = TRUE на Windows - PullRequest
4 голосов
/ 06 апреля 2020

При попытке получить информацию о командной строке текущего процесса с использованием wmic через интерфейс system2:

system2(
  command = "wmic",
  args = paste0("process where processid=", Sys.getpid(), " get commandline"),
  stdout = TRUE
)

я получаю следующие выходные данные и предупреждения:

[1] "ÿþC" ""    ""    ""    ""   
Warning messages:
1: In readLines(rf) : line 1 appears to contain an embedded nul
2: In readLines(rf) : line 2 appears to contain an embedded nul
3: In readLines(rf) : line 3 appears to contain an embedded nul
4: In readLines(rf) : line 4 appears to contain an embedded nul
5: In readLines(rf) : line 5 appears to contain an embedded nul
6: In readLines(rf) :
  incomplete final line found on '...\Temp\RtmpaWqnBy\file1284c476b1'

Интересно при использовании system для получения того же требуемого вывода (информация командной строки о текущем процессе), кажется, работает нормально:

system(
  command = paste0("wmic process where processid=", Sys.getpid(), " get commandline"),
  intern = TRUE
)

Вывод:

[1] "CommandLine                                                     \r"         "\"C:\\Program Files\\R\\R-3.6.2\\bin\\x64\\Rgui.exe\" --cd-to-userdocs  \r"
[3] "\r"  

Также, system2 с stdout = "" выводит вывод на консоль нормально:

system2(
  command = "wmic",
  args = paste0("process where processid=", Sys.getpid(), " get commandline"),
  stdout = ""
)
CommandLine                                                     

"C:\Program Files\R\R-3.6.2\bin\x64\Rgui.exe" --cd-to-userdocs

Я попытался указать аргумент args для system2 по-разному, но безуспешно. Может ли кто-нибудь дать объяснение предупреждений? Некоторые sessionInfo ниже:

  • R версия 3.6.2 (2019-12-12), работает под: Windows 10 x64
  • Платформа: x86_64-w64-mingw32 / x64 (64-разрядная версия)
  • языковой стандарт: LC_COLLATE = English_United Kingdom.1252

Некоторые сведения о воспроизведении:

  • В активном сеансе R это проблема проявляется только для меня в R Gui, а не, например, в RStudio или сеансе R, запущенном из командной строки (cmd.exe)
  • Когда код выполняется при запуске (например, через .Rprofile), он проявляется в R Gui и RStudio, но не в процессах R, созданных из командной строки (cmd.exe)
...