Special File Names Special File Creation

However, the command: cp path1filename1 devconsole will copy the file path1filename1 to the file devconsole which is the special file for the physical console terminal. The contents of the file path1filename1 will be displayed on the console screen. As we can see, special files allow IO operations to be performed with regular interactions among UNIX files. It is convenient to implement a device driver as an abstraction, even when there is no actual device for it to control. Such devices are known as pseudo−devices; for example, pseudo−TTY assigned as PTY is used to communicate with users over a network. From a higher−level software point of view, a pseudo−device looks like a regular device; consequently, preexisting software is transparent, allowing immediate use without the need for any modification.

2.3.1 Special File Names

By convention, special files are kept in the dev directory. On large systems there may be hundreds of devices, including pseudo−devices. On System V ATT flavors, special files are hierarchically organized, with separate subdirectories for different device types: disk, tape, terminal, pseudo−terminal, etc. On BSD platforms, dev is a flat directory containing all of the special files. Special file naming is different among different UNIX flavors; however, some common rules are recognized. The following table presents the usual naming algorithms for disk−related special files: BSD System V File name devrdisk0d devrdskc1d0s2 Access mode devrdisk0d devrdskc1d0s2 Device type devrdisk0d devrdskc1d0s2 Drive devrdisk0d devrdskc1d0s2 Disk partition devrdisk0d devrdskc1d0s2 Controller devrdskc1d0s2 Unfortunately, the implemented rules are very restricted and are usually valid only for the specific flavor; naming procedures vary among flavors within the same UNIX platform.

2.3.2 Special File Creation

To create a special file, UNIX provides the mknod command, which has the following syntax: mknod filename type major minor where filename A name of the special file to be created type A type of the special file to be created c — for a character row type • 50 • p — for a named pipe FIFO • major A major device number decimal or octal minor A minor device number decimal or octal Special files are very small and simple files; they contain only two numbers major and minor number, which are pointers to corresponding device drivers within the kernel. Only the superuser can create a special device file. Both BSD and System V flavors often include some kind of utility program to create and install special files; usually this is a script based on mknod commands. One such script is makedev that originates from SunOS 4.1.x. UNIX administrators like script utilities. First these scripts make their jobs easier. But the scripts are also very instructive. We can read them and learn precisely how the utility works and fully understand what happens behind the scenes. We can discover many of the UNIX secrets that are so useful in its daily administration. Special files are special by nature, but they are dressed like regular files. Several years ago one student raised the questions: Are the ownership and permissions of special files uniform over all UNIX platforms? Their purposes are the same — is there any regularity? How do you recreate a lost special device file? Despite the fact that these questions are very logical, there is no simple response. Ownership and mode of special files vary among different UNIX flavors, as do special file names. A very brief review of several UNIX flavors made several years ago easily proved this. Things are not changed nowadays. The ownership and mode of the dev directory and reviewed same−purpose special files are presented for several UNIX flavors. SunOS ls −lg | grep dev 11 drwxr−sr−x 2 bin staff 11264 May 16 09:24 dev ls −lg dev total 13 0 crw−−w−−−− 1 root wheel 0, May 26 14:52 console 0 crw−r−−−−− 1 root kmem 3, 1 Mar 19 1993 kmem 0 crw−r−−−−− 1 root kmem 3, Mar 19 1993 mem 0 srwxrwxrwx 1 root staff 0 May 16 09:24 printer 0 crw−rw−rw− 1 root staff 21, 16 Jun 11 1993 ptyq0 0 crw−rw−rw− 1 root staff 30, 1 Mar 19 1993 rmt1 0 crw−r−−−−− 1 root operator 17, 0 Jan 20 14:58 rsd0a 0 brw−r−−−−− 1 root operator 7, Sep 22 1993 sd0a ..... ULTRIX ls −lg | grep dev 4 root system 12800 May 27 10:23 dev 51 1 operator tty 0, May 27 13:01 console crw−r−−−−− 1 root kmem 3, 1 May 14 15:18 kmem crw−r−−−−− 1 root kmem 3, Aug 7 1992 mem srwxrwxrwx 1 root system 0 May 27 10:23 printer crw−rw−rw− 1 root system 21, 16 May 27 13:09 ptyq0 brw−−−−−−− 1 root system 23, 0 Mar 22 1993 ra0a crw−rw−rw− 1 root system 36, 8 Mar 22 1993 rmt0h ..... HP−UX ls −l | grep dev drwxr−xr−x 13 root root 30 72 May 26 09:51 dev ls −l dev total 42 crw−−w−−w− 1 root sys 0 0x000000 May 26 09:51 console crw−rw−rw− 1 root sys 24 0x203010 Dec 13 16:31 hil1 crw−r−−−−− 1 bin sys 3 0x000001 Dec 13 16:31 kmem crw−r−−r−− 1 lp bin 11 0x206002 May 26 15:32 lp_panlaser crw−r−−−−− 1 bin sys 3 0x000000 Dec 13 16:31 mem crw−rw−rw− 1 root other 16 0x000010 Dec 13 17:14 ptyq0 crw−rw−rw− 1 root sys 23 0x203000 Dec 13 16:31 rhil ..... IRIX ls −l | grep dev drwxr−xr−x 10 root sys 358 4 May 16 08:59 dev ls −l dev total 87 crw−−w−−w− 3 root sys 58, 0 May 25 14:33console brw−−−−−−− 1 root sys 22, 71 Mar 31 1993 disk2 crw−r−−−−− 1 root sys 1, 1 May 27 1993 kmem crw−r−−−−− 1 root sys 1, May 27 1993 mem srwx−−−−−− 1 root lp May 16 08:59 printer crw−−−−−−− 1 root sys 22, 71 Sep 20 1993 rdisk2 crw−rw−rw− 3 root sys 23, 192 Nov 8 1993 tape crw−−w−−w− 2 root sys 0, 1 Sep 10 1992 ttyd1 ..... It is very easy to conclude that there is no uniformity among different UNIX flavors — naming, ownerships, and file modes are different. What to do if a special file is accidentally lost? Do we have to remember them all? 52

2.4 Processes