从MatlabGUI中发送SIGINT
在MatlabGUI应用程序中,我启动了一个外部程序(Windows上的控制台应用程序),负责从测量系统读取数据。数据存储在几个文件中,外部程序一完成,MATLAB应用程序就会对这些文件进行处理。问题是: 在命令行上运行外部程序时,可以通过发出SIGINT(即按Ctrl+C)正常停止。信号处理程序捕获SIGINT并关闭程序。有没有办法在MatlabGUI应用程序中通过按下“中止”按钮来实现这一点从MatlabGUI中发送SIGINT,matlab,sigint,Matlab,Sigint,在MatlabGUI应用程序中,我启动了一个外部程序(Windows上的控制台应用程序),负责从测量系统读取数据。数据存储在几个文件中,外部程序一完成,MATLAB应用程序就会对这些文件进行处理。问题是: 在命令行上运行外部程序时,可以通过发出SIGINT(即按Ctrl+C)正常停止。信号处理程序捕获SIGINT并关闭程序。有没有办法在MatlabGUI应用程序中通过按下“中止”按钮来实现这一点 经过数小时的搜索,我偶然发现了一个显示如何在MEX文件中检测SIGINT的程序。让MEX调用外部程序
经过数小时的搜索,我偶然发现了一个显示如何在MEX文件中检测SIGINT的程序。让MEX调用外部程序可能会起作用(尽管我还不确定细节)。但是,它仍然需要Ctrl+C来停止程序。如何通过GUI中的按钮发送SIGINT?如果在中启动外部程序,Cygwin将给它一个PID。使用此PID,您可以使用Cygwin的kill命令向进程发送信号。所以从Cygwin开始这个程序。在MATLAB中,您可以使用
!ps
(其中!表示调用外部shell命令)以获取Cygwin PID的列表,然后!kill-s signal pid
向程序发送信号。要从MatlabGUI实现这一点,请让来自某个按钮调用的回调!杀死
如果您在中启动外部程序,那么Cygwin将给它一个PID。使用此PID,您可以使用Cygwin的kill命令向进程发送信号。所以从Cygwin开始这个程序。在MATLAB中,您可以使用!ps
(其中!表示调用外部shell命令)以获取Cygwin PID的列表,然后!kill-s signal pid
向程序发送信号。要从MatlabGUI实现这一点,请让来自某个按钮调用的回调!杀死
你看到了吗?你说你在窗户下,对吗?你看到了可能的复制品吗?你说你在Windows下,对吗?可能是