|
|
If an FMLI application initiates a call to a UNIX system command (for example, action=`unix_command`nop) and the interrupt descriptor evaluates to FALSE for that action descriptor (see ``Interrupt signal handling''), users will not be able to do other tasks until the command completes even if the command could be interrupted. If the command takes a considerable amount of time to execute, the application writer may want the command to execute in the background.
Since FMLI does not recognize the shell background symbol ``&'', the shell built-in command must be used (for instance, action=`shell "unix_command > /dev/null &"`nop).
If you want the user to continue to be able to interact with the application while the background job is running, the output of an executable run by shell in the background must be redirected: to a file if you want to save the output, or to /dev/null if you do not want to save it (or if there is no output); otherwise your application may appear to be hung until the background job finishes processing. The application writer may also wish to explore the co-processing facility coproc(1fmli) which establishes a pipe between FMLI and another independent UNIX system process.
When an FMLI command is disabled in the commands file, as in
name=update
action=nop
this disables it throughout the interface. There is no way to remove it from the Command Menu and still leave it available for use in the application code itself.