efl/src/lib/ecore/efl_exe.eo

81 lines
2.8 KiB
Plaintext

enum @beta Efl.Exe_Signal {
[[Signal is a notification, a message sent by either operating system or some application to our program.
Signals are a mechanism for one-way asynchronous notifications. A signal may be sent from the kernel to
a process, from a process to another process, or from a process to itself. Signal typically alert a
process to some event, such as a segmentation fault, or the user pressing Ctrl-C.]]
int, [[Terminal interrupt.]]
quit, [[Terminal quit.]]
term, [[Termination.]]
kill, [[Kill(can't be caught or ignored).]]
cont, [[Continue executing, if stopped.]]
stop, [[Stop executing(can't be caught or ignored).]]
hup, [[Hangup.]]
usr1, [[User defined signal 1.]]
usr2 [[User defined signal 2.]]
}
enum @beta Efl.Exe_Flags {
[[Flags to customize task behavior.]] // TODO: This needs more detail.
none = 0, [[No special flags.]]
group_leader = 1, [[Process will be executed in its own session.]]
exit_with_parent = 2, [[Exit process when parent process exits.]]
hide_io = 4 [[All console IO will be hidden.]]
}
class @beta Efl.Exe extends Efl.Task implements Efl.Io.Reader, Efl.Io.Writer, Efl.Io.Closer, Efl.Core.Command_Line
{
[[Further customization of @Efl.Task, including signals and environment control.]] // TODO: This needs more detail
methods {
signal {
[[Send a signal to this task.]]
params {
sig: Efl.Exe_Signal; [[Signal number to send.]]
}
}
@property exe_flags {
[[Customize the task's behavior.]]
set { }
get { }
values {
flags: Efl.Exe_Flags; [[Flags.]]
}
}
@property exit_signal {
[[The final exit signal of this task.]]
get { }
values {
sig: int; [[The exit signal, or -1 if no exit signal happened.]]
}
}
@property env {
[[If $env is $null then the process created by this object is
going to inherit the environment of this process.
In case $env is not $null then the environment variables declared
in this object will represent the environment passed to the new process.
]]
get {
}
set {
}
values {
env : Efl.Core.Env; [[$env will be referenced until this object does not need it anymore.]]
}
}
}
implements {
Efl.Object.constructor;
Efl.Object.destructor;
Efl.Task.priority { get; set; }
Efl.Task.run;
Efl.Task.end;
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Reader.read;
Efl.Io.Reader.can_read { get; set; }
Efl.Io.Reader.eos { get; set; }
Efl.Io.Writer.write;
Efl.Io.Writer.can_write { get; set; }
}
}