uucico daemon
The uucico daemon transports the files required to send data from one system to another.
The uucp and uux commands start the uucico daemon to transfer command, data, and execute files to the designated system. The uucico daemon is also started periodically by the BNU scheduler, the uusched daemon. When started by the uusched daemon, the uucico daemon attempts to contact other systems and execute the instructions in the command files.
To run the instructions in the command files, the uucico daemon first checks the /etc/uucp/Systems file (or one or more other files specified by /etc/uucp/Sysfiles) for the system to be called. The daemon then checks the Systems file entry for a valid time to call. If the time is valid, the uucico daemon checks the Type and Class fields and accesses the /etc/uucp/Devices file (or one or more other files specified by /etc/uucp/Sysfiles) for a device that matches.
After finding a device, the uucico daemon checks the /var/locks directory for a lock file for the device. If one exists, the daemon checks for another device of the requested type and speed.
When no device is available, the daemon returns to the Systems files for another entry for the remote system. If one exists, the daemon repeats the process of searching for a device. If another entry is not found, the daemon makes an entry in the /var/spool/uucp/.Status/SystemName file for that remote system and goes on to the next request. The command file remains in the queue. The uucico daemon attempts the transfer again at a later time. The later attempt is called a retry.
When the uucico daemon reaches the remote system, it uses the instructions in the Systems files to log in. This causes an instance of the uucico daemon to be invoked on the remote system as well.
The two uucico daemons, one on each system, work together to make the transfer. The uucico daemon on the calling system controls the link, specifying the requests to be performed. The uucico daemon on the remote system checks the local permissions for whether they allow the request to be performed. If so, the file transfer starts.
After the uucico daemon on the calling system has finished transferring all requests it has for the remote system, it sends a hangup request. When the remote uucico daemon has transactions to send to the calling system, it denies the hangup request, and the two daemons reverse roles.
When nothing is left to be transferred in either direction, the two uucico daemons hang up. At this point, the uuxqt daemon (uuxqt daemon) is called to execute remote command requests.
Throughout the transfer process, the uucico daemons on both systems log messages in the BNU log and error files.