假设我有一个可执行文件c:\my directory\my file.exe,我希望在我的R脚本开头附近启动,然后在我的R脚本结束附近终止.什么是干净的方式在Windows平台上做到这一点?
我知道R命令喜欢shell和shell.exec,但是我不清楚这些将允许干净地捕获进程id然后使用类似pskill函数的东西.还不清楚通过某种管道连接运行这个可执行文件是否更有意义- 或者管道是如何工作的.这个特殊的可执行文件应PATH作为系统变量包含在我的窗口中,因此可以想象该system函数在这里也可能有价值.
另外澄清:捕获进程id可能很重要,因为(至少对我而言)这将用于数据库服务器的可执行文件 - 如果多个数据库服务器当前在同一台机器上运行,则该进程不应该杀死所有这些 - 只是在R脚本开头初始化的那个.
额外信用:假设c:\my directory\my file.exe应该通过实际执行另一个文件来调用c:\my directory\another file.bat- 但是my file.exe需要在R脚本结束时将其杀死.
我需要在我的bat文件中运行的"Las2xyz"进程的进程ID.
我怎样才能实现这一目标?我不能使用最后一个RUN ID或第一个ID,我需要实际的进程ID,因为在任何给定时间有多个这些运行并且在任何给定时间结束我无法猜测它.
这是我的批次:
@echo off
@echo off
set PATH=C:\Windows\system32;C:\atlass\las2xyz;C:\atlass\las2xyz\bin;C:\atlass\las2xyz\lib
set TOP_HOME=%C:\atlass\las2xyz%
del dat*.xyz dat*.seg dat*.pat dat*.tmp dat*.txt test.nam
las2xyz.exe "[ flightpath 2 out 5 lasformat 1 target 0 FIXCLASS 1 step 20 unit *METRIC* fov 20.0 rollfix 1 sn_number *H68_038-003* lsystem *LIDAR_1* DESTSYS 144 minele -100.00 maxele 6000.00 hoff 0.00 eoff 0.00 noff 0.00 bootnr 13110201 leg 1]" "C:\Users\Developer-One\Desktop\las2xyz_Data\131102_003243_GPE.sdc" , "\\192.168.0.102\agis\Macquarie_Barwon_1310\Area_01\sbet_038_13110201.out" - "131102_003243_cov"
Run Code Online (Sandbox Code Playgroud)
有人告诉我该怎么做!谢谢
我有一个长期运行的进程(用Java编写),我希望与系统异步运行(...,wait = FALSE).为了能够确定进程何时结束,我想根据在如何确定何时以系统启动进程(...,wait = FALSE)中给出的建议结束后创建文件.问题是,似乎wait参数仅适用于多行系统命令中的最后一行,而我似乎无法找到解决方法.
例:
system('sleep 2') # waits 2 seconds before control is returned to the user
system('sleep 2', wait=FALSE) # control is returned immediately
system('sleep 2; ls', wait=FALSE) # waits 2 seconds before control is returned to the user
Run Code Online (Sandbox Code Playgroud)
我正在运行mac系统btw ...