Run/Kill a Process Called From Matlab

16 次查看(过去 30 天)
I am working on designing a GUI that reads data from a file that is populated from a Perl script. As part of unifying this GUI, I am trying to start and stop the Perl script by using a switch in Matlab App Designer. However, I am not sure how to implement stopping the Perl script.
Details of the Perl Script:
  • The script is designed as an infinite script that collects data every 1 second
  • The script must be manually stopped or killed
I have been researching different methods to implement starting and stopping an external script that is running in the background. For Windows platform, I have found that System.Diagnostics.Process() works for starting the script, getting the PID, and killing the script. Is there any advantages to using these methods instead of the system() Matlab function? If I use the system() function, is there a way to kill the script (I have been unable to find one so far)? For Linux Platform, is there similar methods to those available for the Windows platform for starting and killing the script? I have not been able to find much information online about the Linux Platform.
Any information is greatly appreciated!

采纳的回答

Sam
Sam 2021-7-6
编辑:Sam 2021-7-6
You can refer to this post on how to run the external script from matlab. Since the PID will be saved while starting the process, you can then use a methods similar to one used here to kill the script.
This isn't an answer to all your questions, however it does answer some of them.
  1 个评论
Nick Nauman
Nick Nauman 2021-7-6
From my understanding, using System.Diagnostics.Process.Start does not run the script as a background process so Matlab would stop running until the script process ends. This is important because I am plotting the data collected in real-time. Is there a way to get the PID when using the system() Matlab function? I know adding '&' to the the end of the system() input argument command will make it a background process so Matlab will continue to run. Also, I would need to know if you can get the PID using system() when running on Linux platforms because I am unaware of any class like System.Diagnostics.Process() used for Windows platform.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 PID Controller Tuning 的更多信息

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by