Я запускаю веб-сервер одним Makefile
командой make install
Содержимое Makefile
project : webserver.c
webserver.c : server/webserver.c
gcc -g -D_FORTIFY_SOURCE=0 -frecord-gcc-switches -fno-stack-protector -g -o server/webserver -lpthread -lnsl -lresolv -D_TS_ERRNO server/webserver.c
install :
sudo /etc/init.d/fhttpd.init stop
sudo cp server/webserver /usr/local/fhttpd/fhttpd
sudo chmod 4755 /usr/local/fhttpd/fhttpd
sudo /etc/init.d/fhttpd.init start
clean :
rm server/webserver
содержимое fhttpd.init
httpd="/usr/local/fhttpd/fhttpd"
prog=fhttpd
port=8080
RETVAL=0
# disable ASLR so that lab exercise will work reliably
echo 0 > /proc/sys/kernel/randomize_va_space
start() {
echo "Stopping $prog..."
killall $prog
echo -n $"Starting $prog: "
$httpd $port &
}
stop() {
echo -n $"Stopping $prog: "
killall $prog
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
start
;;
reload)
start
;;
*)
echo $"Usage: $prog {start|stop|restart}"
exit 1
esac
exit $RETVAL
Я предполагаю, что init использует &
, чтобы заставить сервер работать в фоновом режиме. Но после того, как я использую эту команду. Я использовал команду jobs
, чтобы показать все свои задания, но ничего не вижу. Но если я запущу его напрямую, вот так
lhu343ai@server:~$ /usr/local/fhttpd/fhttpd 8080 &
[1] 7154
lhu343ai@server:~$ jobs
[1]+ Running /usr/local/fhttpd/fhttpd 8080 &
У меня все в порядке.
Если я просто использую make install
или sudo /etc/init.d/fhttpd.init start
, jobs
ничего не показывает. На самом деле сервер работает корректно. Я просто не знаю, как это работает, потому что я использую &
в /etc/init.d/fhttpd.init.
Я не знаю, почему я не могу использовать «работы» с makefile
. И как я могу вернуть фоновую программу в этом случае.
pgrep
, чтобы убедиться, что сервер работает. - person glenn jackman   schedule 09.02.2017fhttpd status
что-то сделает - person glenn jackman   schedule 09.02.2017