Approche des aspects systèmes (Ruby)

proc = `ps aux`
puts $?
puts $?.exitstatus = 0

Sans parler de droits, chaque fichiers n'est pas toujours lisible par tous. Il existe trois type d’accès :

f = File.new("fichier.txt")
 
# Lecture d'un fichier à accès exclusif
f.flock(File::LOCK_EX)
 
# Lecture d'un fichier à accès partagé
#f.flock(File::LOCK_SH)
 
#...
 
# On libère le vérrou :
f.flock(File::LOCK_UN)
 
f.close

De la classe File::Stat on peut obtenir :

  1. stat : respecte des liens symbolique et donne des informations sur le fichier cible.
  2. lstat : ne suit par les liens symboliques et donne des informations sur le lien.
puts File.stat(”gros_fichier.txt).size

Il est possible de changer le comportement d'un programme dès qu'il reçoit un signal par exemple.

signal.trap(3) { puts "J'ai reçu le signal SIGQUIT" }

Lors qu'il s'agit d'en envoyer :

pid = fork do
   Signal.trap("HUP") { puts "Ouch!"; exit }
end
 
Process.kill("HUP", pid)
Process.wait
fork do 
   puts "fils #{Process.pid}"
end
puts "Père #{Process.pid}"
 
# On attend la fin d'un processus avec :
Process.wait
#!/usr/bin/ruby -w
 
1.upto(4) do |i|
  if fork != nil
    puts ”pid = #{Process.pid}, ppid = #{Process.ppid}, i = #{i}”
  end
end