Run/Kill a Process Called From Matlab

16 ビュー (過去 30 日間)
Nick Nauman
Nick Nauman 2021 年 7 月 6 日
コメント済み: Nick Nauman 2021 年 7 月 6 日
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 Center および File ExchangePID Controller Tuning についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by