Вы должны поймать сигнал SIGINT (мы говорим POSIX правильно?)
См. ответ @Gab Royer для сигментации.
Пример :
#include
#include
#include
void my_handler(sig_t s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
signal (SIGINT,my_handler);
while(1);
return 0;
}
Я гуглил и нашел несколько интересных вариантов решения этой проблемы. Среди них twelvemokeys , который позволяет расширить возможности ImageIO в Java, я попробовал его, и он работает, как и ожидалось, без необходимости изменять код (поскольку, как я упоминал ранее, он позволяет ImageIO расширять свои возможности). Наконец, они проделали большую работу по модульности расширений в различных форматах изображений.
Maven
<dependencies>
<!-- https://mvnrepository.com/artifact/com.twelvemonkeys.imageio/imageio-psd -->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-psd</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies>
Java
Тот же код с путем изображения PSB.
BufferedImage nasaImage = ImageIO.read(new File(path));
Запомните проблему размера изображений, проверьте рекомендацию twelvemonkeys .