当从 R 会话调用system
函数并传递pgrep
命令以列出与特定名称匹配的进程 id 时,system
调用的结果会产生一个额外的 pid,而不是pgrep
直接在 shell 中使用的相同命令。
这可能是在调用期间创建额外进程的问题,该进程system
也被 R 会话捕获pgrep
并返回给 R 会话。
问题是如何避免这个问题并找到与名称匹配的所有进程 ID?
要重现启动任何进程,我将使用gedit
进程(ubuntu 记事本应用程序)。
从 R 运行:
system("pgrep -f gedit", intern = TRUE)
# [1] "4898" "5014"
从外壳运行:
pgrep -f gedit
# 4898
如果额外的 pid 总是最后一个返回,我可以使用x[-length(x)]
.