[Rcpp-devel] Interrupts in compiled code.

Davor Cubranic cubranic at stat.ubc.ca
Tue Jan 25 00:36:15 CET 2011


Actually, the interrupt seems to be caught only the first time I enter "foo". When I call it the second time from the prompt, no handler is activated -- I'm not sure why.

Davor


On 2011-01-24, at 3:22 PM, Davor Cubranic wrote:

> Hi Dirk,
> 
> I have a question about your example on better handling of interrupts with Rcpp: you set the signal handler on entry into the function, but never reset it to the original value. Should that be done as part of the cleanup? What will happen when the function returns to R, whether it was interrupted or not?
> 
> Davor
> 
> 
> On 2010-12-08, at 1:02 PM, Dirk Eddelbuettel wrote:
> 
>> Here is a simple example that uses a standard C interrupt handler to set a
>> standard C++ exception to abort:
> ...
>> RcppExport SEXP foo(void) {
>> 
>> try {
>> 
>>   signal(SIGINT, intHandler);
>>   signal(SIGKILL, intHandler);
>> [...]
>> } catch(std::exception &ex) { 
>>   std::cerr << "In catch of std::exeception" << std::endl;
>>   // here you insert some clenup
>>   forward_exception_to_r(ex); 
>> 
>> } catch(...) { 
>>   ::Rf_error("c++ exception (unknown reason)"); 
>> }
>> 
>> return R_NilValue;
>> }
> 
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel



More information about the Rcpp-devel mailing list