但是当我尝试运行OpenCL版本时,它运行了大约1秒(在OpenGL中显示了似乎有效的输出),然后被SIGXCPU终止。已尝试搜索一些已知问题,但一无所获。所以我试着捕捉并忽略这个信号,但是每次我尝试的时候,程序都挂了。当我将mono设置为捕获一些不同的信号(例如SIGPIPE)时,它运行正常(减去kill When opencl)。,它仍然在“接触”该信号后挂起。);
在Application.EnableVisu
The
system()函数将忽略SIGINT和SIGQUIT信号,并在等待命令终止时阻塞SIGCHLD信号。如果这可能导致应用程序丢失一个本来会杀死它的信号,那么应用程序应该检查system()的返回值,并在命令由于接收到信号而终止时采取对应用程序合适的任何操作。这意味着启动长期运行的子进程的程序将被SIGINT和SIGQUIT阻塞很长时间。("s
当向进程发送信号时,内核仍然将这个信号保存在挂起的列表中(我在这里的术语)。在这种情况下,内核的行为就像信号只被阻塞一样,尽管它也应该被忽略。我不能理解这种行为。当这个进程处于休眠状态时,如果我向它发送一个SIGUSR1 (从shell:-s SIGUSR1 PID),然后检查挂起的列表,我将得到以下打印:
Signal 10 is pending.如果我取消注释已注释的代码块,该