Modify init to start telnetd and httpd if using lwIP

上级 594589f9
...@@ -4,8 +4,33 @@ ...@@ -4,8 +4,33 @@
#include "stat.h" #include "stat.h"
#include "user.h" #include "user.h"
#include "fcntl.h" #include "fcntl.h"
#include "lib.h"
char *argv[] = { "sh", 0 }; static char *sh_argv[] = { "sh", 0 };
static char *app_argv[][MAXARG] = {
#ifdef LWIP
{ "telnetd", 0 },
{ "httpd", 0 },
#endif
};
static int
startone(char **argv)
{
int pid;
pid = fork(0);
if(pid < 0){
printf(1, "init: fork failed\n");
exit();
}
if(pid == 0){
exec(argv[0], argv);
printf(1, "init: exec %s failed\n", argv[0]);
exit();
}
return pid;
}
int int
main(void) main(void)
...@@ -24,17 +49,11 @@ main(void) ...@@ -24,17 +49,11 @@ main(void)
if (mknod("sampler", 3, 1) < 0) if (mknod("sampler", 3, 1) < 0)
printf(2, "init: mknod sampler failed\n"); printf(2, "init: mknod sampler failed\n");
for (int i = 0; i < NELEM(app_argv); i++)
startone(app_argv[i]);
for(;;){ for(;;){
pid = fork(0); pid = startone(sh_argv);
if(pid < 0){
printf(1, "init: fork failed\n");
exit();
}
if(pid == 0){
exec("sh", argv);
printf(1, "init: exec sh failed\n");
exit();
}
while((wpid=wait()) >= 0 && wpid != pid) while((wpid=wait()) >= 0 && wpid != pid)
printf(1, "zombie!\n"); printf(1, "zombie!\n");
} }
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论