Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MatlabGUI中发送SIGINT_Matlab_Sigint - Fatal编程技术网

从MatlabGUI中发送SIGINT

从MatlabGUI中发送SIGINT,matlab,sigint,Matlab,Sigint,在MatlabGUI应用程序中,我启动了一个外部程序(Windows上的控制台应用程序),负责从测量系统读取数据。数据存储在几个文件中,外部程序一完成,MATLAB应用程序就会对这些文件进行处理。问题是: 在命令行上运行外部程序时,可以通过发出SIGINT(即按Ctrl+C)正常停止。信号处理程序捕获SIGINT并关闭程序。有没有办法在MatlabGUI应用程序中通过按下“中止”按钮来实现这一点 经过数小时的搜索,我偶然发现了一个显示如何在MEX文件中检测SIGINT的程序。让MEX调用外部程序

在MatlabGUI应用程序中,我启动了一个外部程序(Windows上的控制台应用程序),负责从测量系统读取数据。数据存储在几个文件中,外部程序一完成,MATLAB应用程序就会对这些文件进行处理。问题是:

在命令行上运行外部程序时,可以通过发出SIGINT(即按Ctrl+C)正常停止。信号处理程序捕获SIGINT并关闭程序。有没有办法在MatlabGUI应用程序中通过按下“中止”按钮来实现这一点


经过数小时的搜索,我偶然发现了一个显示如何在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下,对吗?可能是