c6a9cd69c2
* NEW: Add examples again. I hope correctly this time. git-svn-id: svn://localhost/gambas/trunk@6726 867c0c6c-44f3-4631-809d-bfa615b0a4ec
54 lines
1.7 KiB
Text
54 lines
1.7 KiB
Text
' Gambas module file
|
|
|
|
Private $hWatch As Watch
|
|
|
|
Public Sub Main()
|
|
' The watched events are determined automatically by the event handlers defined
|
|
$hWatch = New Watch("/tmp/gambas." & Str$(User.Id), True) As "GambasDirectory"
|
|
$hWatch.Tag = New Collection ' Save descendants here
|
|
|
|
Print "I'm watching... You may now start Gambas projects."
|
|
Print "Return toggles Pause/Resume. Enter \"quit\" to quit."
|
|
End
|
|
|
|
Public Sub Application_Read()
|
|
Dim sBuf As String
|
|
|
|
Line Input sBuf
|
|
If sBuf = "quit" Then Quit
|
|
$hWatch.IsPaused = Not $hWatch.IsPaused
|
|
Print "Currently";; IIf($hWatch.IsPaused, "inactive", "active")
|
|
End
|
|
|
|
Public Sub GambasDirectory_Create()
|
|
If Not Watch.IsDir Then Return ' Skip files
|
|
Print "New Gambas process:";;
|
|
' Watch.Name is the PID of the new Gambas process. Try to get its name
|
|
' from the /proc filesystem.
|
|
With Split(File.Load("/proc" &/ Watch.Name &/ "cmdline"), "/")
|
|
Last.Tag[Watch.Name] = Left$(.[.Max], -1)
|
|
Print Last.Tag[Watch.Name]
|
|
End With
|
|
|
|
Catch
|
|
Print "(unknown)"
|
|
' Opening the /proc file may fail because the directory may have been
|
|
' deleted already (if the process was relatively short-lived and this
|
|
' event took longer than that to get from the kernel to us).
|
|
End
|
|
|
|
Public Sub GambasDirectory_Delete()
|
|
Dim sName As String
|
|
|
|
If Not Watch.IsDir Then Return
|
|
sName = Last.Tag[Watch.Name]
|
|
' Sadly, we can only provide a name for dying processes that we watched
|
|
' being created -- the /proc file is already gone at this point.
|
|
'
|
|
' Note that if the interpreter crashes (the process ends abnormally),
|
|
' directories won't be removed so we won't notice that the process is
|
|
' gone.
|
|
If Not sName Then sName = "(unknown)"
|
|
Print sName;; "terminated (normally)"
|
|
Last.Tag.Remove(Watch.Name)
|
|
End
|