Hi,

You might consider D-BUS for your application and the D-BUS PHP binding
which is available since some days too. This would allow you to start /
stop your C application in a far more secure way than the suggested one.

Please have a look at my original release annoucement at the D-BUS
mailing list:

http://lists.freedesktop.org/archives/dbus/2008-February/009363.html

as well as the download URL:

https://sourceforge.net/project/showfiles.php?group_id=17176&package_id=68954

Even if the application runs on Windows you might be able to use D-BUS
for communication.

Daniel Brown schrieb:
> On Wed, Feb 27, 2008 at 7:51 AM, David Sveningsson <[EMAIL PROTECTED]> wrote:
>> Hi, I've written an application in c which I would like to start/stop as
>>  a daemon in gnu/linux.
>>
>>  The application has the argument "--daemon" which forks the process and
>>  exits the parent. Then it setups a SIGQUIT signal handler to properly
>>  cleanup and terminate. It also maintains a lockfile (with the pid) so
>>  only one instance is allowed.
>>
>>  So, to start this application I created a php site that calls
>>  exec("/path/to/binary --daemon > /dev/null 2> /dev/null").
> 
>     You can (and should) write this out like so:
> <?
>     exec("/path/to/binary --daemon >> /dev/nul 2>&1",$ret,$err);
> ?>
> 
>     The >> means to append to the end of a file.  You can use > on
> /dev/null, since it's not a file, but just a black hole, but you may
> want to get into the habit of redirecting and appending.  The 2>&1
> redirects channel 2 (STDERR) to channel 1 (STDOUT) so that all output
> in this case is sent to /dev/null.  For any output that would
> otherwise be generated, $ret will hold STDOUT data, and $err will hold
> the STDERR code.
> 
>>  Everything is working so far, but I cannot get the application to
>>  receive the SIGQUIT when I start using php and exec. Not even manually
>>  using kill in the shell. It works correctly if I start manually thought.
>>
>>  So, is this possible to do? Doesn't exec allow applications with signal
>>  handlers? Is there some other way to terminate the application?
> 
>     You may want to launch it from a BASh script.  I had written out
> an example for someone on this list at the beginning of the month.
> Feel free to check it out and use it, or use any part of it:
> 
>     [Download] http://pilotpig.net/code-library/daemonize.sh
>     [View Source] http://pilotpig.net/code-library/source.php?f=daemonize.sh
> 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to