我通过命令make install
运行一个Makefile
网络服务器
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
一起使用.在这种情况下,我如何才能恢复后台程序。
我希望此命令将执行提升到超级用户的用户空间:
sudo /etc/init.d/fhttpd.init start
因此,您不会在普通用户中看到该过程,lhu343ai
.相反,您需要检查超级用户的jobs
。例如,sudo jobs
将是您要查找的命令...
请注意,这不是一个编程问题,当然也不是关于 C 的问题。我们有足够多的低级噪音来自那些将 x86 汇编概念与 C 混淆的人,就像它一样。