[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference azur::mcc

Title:DECmcc user notes file. Does not replace IPMT.
Notice:Use IPMT for problems. Newsletter location in note 6187
Moderator:TAEC::BEROUD
Created:Mon Aug 21 1989
Last Modified:Wed Jun 04 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:6497
Total number of notes:27359

5142.0. "CTRL-C for program that uses call_interface" by IJSAPL::PEURSUM (Systems Specialist, EIS Holland) Thu Jun 03 1993 10:21

    I'm developing a program that uses the DECmcc call interface:
    It uses:
    
          o DECmcc Common Routines:
                            - mcc_ilv_..., mcc_time_..., etc.
          o DECmcc mcc_call_access(...):
                            - access to the translan Access Module
                              to get counter-values for translan bridges.
    
    My program is linked with the DECmcc shareable image as described in
    the MM-programming manual.
    
    My code (VAX-C) uses the VAXCRTL-routine signal() to install a
    routine that will be excecuted on receipt of a signal (for example
    the signal SIGINT - VMS CTRL/C Interrupt or the signal SIGILL -
    Illegal Instruction).
    
    When during the excecution of my program a signal SIGILL is generated
    (for example by calling the VAXCRTL-routine gsignal() ) the signal
    handler is called and executed.
    
    But :::
    When I press CTRL-C during the execution of my program (the signal
    SIGINT should be generated) the signal handler is not called.
    My program is terminated and the screen displays the message:
    %MCC-E-ABORTCTRLY, image aborted by Ctrl\y
    
    I thought that the MCC Common Routines returned a cvr MCC_S_CANCELLED
    or MCC_S_ALERT_TERMREQ when CTRL/C is pressed during excecution of it.
    But this seems not to be true:
    It terminates the execution of my program and displays the above
    message.
    
    I understand that my program runs as a thread in the DECmcc environment
    but i don't understand how CTRL-C is passed to my routine and how I can
    catch CTRL-C to execute a few clean-up before terminating my program.
    
    Can someone explain.
    
    Regards,   Paul
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
                  
T.RTitleUserPersonal
Name
DateLines
5142.1mcc_cc_req_alert_if_ctrl_cCHEEKO::DITMARSPeteFri Jun 11 1993 17:595
    ^C does not, by itself, cause an alert to be delivered to the currently
    running thread.  I'm not sure if the routine is documented, but there
    is an MCC kernel service mcc_cc_req_alert_if_ctrl_c() which sets up a
    ctrl-c handler which will, when ^C is pressed, send an alert to any 
    thread that called this routine.  The routine takes no arguments.