|
|
|
Starting other programs
|
|
|
|
|
|
|
|
In KDE 2 and KDE 3 there are several ways to start other programs from within
|
|
|
|
your application. Here is a short summary of your options with reasons why
|
|
|
|
you should or should not use them.
|
|
|
|
|
|
|
|
1. fork + exec
|
|
|
|
|
|
|
|
You never want to use this unless you have a very good reason why it is
|
|
|
|
impossible to use TDEProcess.
|
|
|
|
|
|
|
|
2. TDEProcess
|
|
|
|
|
|
|
|
You want to use this if you need to start a new process which needs to be a
|
|
|
|
child of your process, e.g. because you want to catch stdout/stderr or need
|
|
|
|
to send it data via stdin. You should never use this to start other KDE
|
|
|
|
applications unless your application is called kgdb :-) If you need to
|
|
|
|
send/receive text like data to/from the process, you are probably better
|
|
|
|
off with KProcIO
|
|
|
|
|
|
|
|
3. KProcIO
|
|
|
|
|
|
|
|
Like TDEProcess. Unlike TDEProcess, this class actually makes it easy to
|
|
|
|
send data to and receive data from the process.
|
|
|
|
|
|
|
|
4. startServiceByDesktopPath
|
|
|
|
|
|
|
|
Preferred way to launch desktop (KDE/Gnome/X) applications or KDE services.
|
|
|
|
The application/service must have a .desktop file. It will make use of
|
|
|
|
KDEinit for increased startup performance and lower memory usage. These
|
|
|
|
benefits only apply to applications available as KDEinit loadable module (KLM)
|
|
|
|
|
|
|
|
5. KRun
|
|
|
|
|
|
|
|
Generic way to open documents/applications/shell commands. Uses
|
|
|
|
startServiceBy.... where applicable. Offers the additional
|
|
|
|
benefit of startup-notification.
|
|
|
|
KRun can start any application, from the binary or the desktop file,
|
|
|
|
it will determine the mimetype of a file before running the
|
|
|
|
preferred handler for it, and it can also start shell commands.
|
|
|
|
This makes KRun the recommended way to run another program in KDE 2.
|