Currently, an event system like on the ethereum blockchain is not really supported. There are two github issues of the eos code that mention this feature, but say that it is not directly supported
In https://github.com/EOSIO/eos/issues/4003#issuecomment-400155409 the poster says that you currently could achieve this by using a plugin on your own nodeos ...
Demux may help you!
you can watch specific contracts and actions, and handle this in light weight.
and see this example
have a good day :)
In the main repository there is a plugin called history_plugin which can serve as a good example and it includes a simple configurable filter for what it retains. A similar mechanism could be created to filter based on almost anything and its skeleton is a good resource for traversing the data structures you have access to as a plugin.
UPDATE: The authorization for the system contract to do transfers in behalf of the users through inline actions is automatic because it is configured as a privileged account in the blockchain. For normal contracts to be able to send inline actions to other contracts, you would need the user to specify the eosio.code permission for that contract, thus giving ...
There is no way for smart contract to send any signal to external process however there's some alternative approach that's create processes listen to the blockchain state or event by a period of time.
One more thing, normally a smart contract is called from external tool/agent.