Useful Scheme programs often need to interact with the underlying operating system.
file-exists?
checks if its argument string names
a file. delete-file
deletes its argument file.
These procedures are not part of the Scheme standard,
but are available in most implementations. These
procedures work reliably only for files that are not
directories. (Their behavior on directories is
dialect-specific.)
file-or-directory-modify-seconds
returns the time when its
argument file or directory was last modified. Time is
reckoned in seconds from 12 a.m. GMT, 1 January 1970.
E.g.,
(file-modify-seconds "hello.scm")
=> 893189629
assuming the file hello.scm
was last messed with
sometime on 21 April 1998.
system
procedure executes its argument string
as an operating-system command. It returns true if the
command executed successfully with an exit status 0,
and false if it failed to execute or exited with a
non-zero status. Any output generated by the command
goes to standard output.
(system "ls")
;lists current directory
;tests if file `spot' exists
(define fname "spot")
(system (string-append "test -f " fname))
;removes `spot'
(system (string-append "rm -f " fname))
The last two forms are equivalent to
(file-exists? fname)
(delete-file fname)
getenv
procedure returns the setting of an
operating-system environment variable. E.g.,
(getenv "HOME")
=> "/home/dorai"
(getenv "SHELL")
=> "/bin/bash"