inetd源代码分析之调试信息对应的源代码
来源:互联网 发布:无头骑士异闻录 知乎 编辑:程序博客网 时间:2024/06/02 06:50
int
main (int argc, char *argv[], char *envp[])
{
if (pidfile_option)
{
FILE *fp = fopen (pid_file, "w");
if (fp != NULL)
{
if (debug)
fprintf(stderr, "Using pid-file at \"%s\".\n", pid_file);
fprintf (fp, "%d\n", (int) getpid ());
fclose (fp);
}
else
syslog (LOG_CRIT, "can't open %s: %s\n", pid_file,
strerror (errno));
}
signal_set_handler (SIGALRM, retry);
config (0);
第一部分调试信息
Using pid-file at "/var/run/inetd.pid".
void
config (int signo)
{
else if (S_ISREG (statbuf.st_mode))
{
nextconfig (config_files[i]);
}
}
else
{
if (signo == 0)
fprintf (stderr, "inetd: %s, %s\n",
config_files[i], strerror (errno));
else
syslog (LOG_ERR, "%s: %m", config_files[i]);
}
}
第五部分调试信息
inetd: /etc/inetd.d, No such file or directory
void
nextconfig (const char *file)
{
while ((sep = getconfigent (fconfig, file, &line)))
{
if (ISMUX (sep))
{
sep->se_fd = -1;
sep->se_checked = 1;
enter (sep);
}
else
expand_enter (sep);
if (serv_node)
free (sep->se_node);
else
freeconfig (sep);
}
struct servtab *
getconfigent (FILE *fconfig, const char *file, size_t *line)
{
for (i = 0; i < sep->se_argc; i++)
{
sep->se_argv[i] = argv[INETD_SERVER_ARGS + i];
if (debug)
fprintf (stderr, "sep->se_argv[%d] = %s\n",i,sep->se_argv[i]);
argv[INETD_SERVER_ARGS + i] = 0;
}
第二部分调试信息:(自己加的)
sep->se_argv[0] = /usr/sbin/tftpd
sep->se_argv[1] = -l
sep->se_argv[2] = /home/ch/tftpboot
sep->se_argv[3] = (null)
int
expand_enter (struct servtab *sep)
{
for (rp = result; rp != NULL; rp = rp->ai_next)
{
memset (&sep->se_ctrladdr, 0, sizeof (sep->se_ctrladdr));
memcpy (&sep->se_ctrladdr, rp->ai_addr, rp->ai_addrlen);
sep->se_addrlen = rp->ai_addrlen;
cp = enter (sep);
servent_setup (cp);
}
struct servtab *
enter (struct servtab *cp)
{
if (debug)
print_service ("ADD ", cp);
第三部分调试信息
/etc/inetd.conf:32: ADD : *:tftp proto=udp, wait=1, max=0, user=nobody group= builtin=no server=/usr/sbin/tcpd
void
servent_setup (struct servtab *sep)
{
if (debug)
fprintf (stderr, "registered %s on %d\n", sep->se_server, sep->se_fd);
第四部分调试信息
registered /usr/sbin/tcpd on 4
main (int argc, char *argv[], char *envp[])
{
if (pidfile_option)
{
FILE *fp = fopen (pid_file, "w");
if (fp != NULL)
{
if (debug)
fprintf(stderr, "Using pid-file at \"%s\".\n", pid_file);
fprintf (fp, "%d\n", (int) getpid ());
fclose (fp);
}
else
syslog (LOG_CRIT, "can't open %s: %s\n", pid_file,
strerror (errno));
}
signal_set_handler (SIGALRM, retry);
config (0);
第一部分调试信息
Using pid-file at "/var/run/inetd.pid".
void
config (int signo)
{
else if (S_ISREG (statbuf.st_mode))
{
nextconfig (config_files[i]);
}
}
else
{
if (signo == 0)
fprintf (stderr, "inetd: %s, %s\n",
config_files[i], strerror (errno));
else
syslog (LOG_ERR, "%s: %m", config_files[i]);
}
}
第五部分调试信息
inetd: /etc/inetd.d, No such file or directory
void
nextconfig (const char *file)
{
while ((sep = getconfigent (fconfig, file, &line)))
{
if (ISMUX (sep))
{
sep->se_fd = -1;
sep->se_checked = 1;
enter (sep);
}
else
expand_enter (sep);
if (serv_node)
free (sep->se_node);
else
freeconfig (sep);
}
struct servtab *
getconfigent (FILE *fconfig, const char *file, size_t *line)
{
for (i = 0; i < sep->se_argc; i++)
{
sep->se_argv[i] = argv[INETD_SERVER_ARGS + i];
if (debug)
fprintf (stderr, "sep->se_argv[%d] = %s\n",i,sep->se_argv[i]);
argv[INETD_SERVER_ARGS + i] = 0;
}
第二部分调试信息:(自己加的)
sep->se_argv[0] = /usr/sbin/tftpd
sep->se_argv[1] = -l
sep->se_argv[2] = /home/ch/tftpboot
sep->se_argv[3] = (null)
int
expand_enter (struct servtab *sep)
{
for (rp = result; rp != NULL; rp = rp->ai_next)
{
memset (&sep->se_ctrladdr, 0, sizeof (sep->se_ctrladdr));
memcpy (&sep->se_ctrladdr, rp->ai_addr, rp->ai_addrlen);
sep->se_addrlen = rp->ai_addrlen;
cp = enter (sep);
servent_setup (cp);
}
struct servtab *
enter (struct servtab *cp)
{
if (debug)
print_service ("ADD ", cp);
第三部分调试信息
/etc/inetd.conf:32: ADD : *:tftp proto=udp, wait=1, max=0, user=nobody group= builtin=no server=/usr/sbin/tcpd
void
servent_setup (struct servtab *sep)
{
if (debug)
fprintf (stderr, "registered %s on %d\n", sep->se_server, sep->se_fd);
第四部分调试信息
registered /usr/sbin/tcpd on 4
阅读全文
0 0
- inetd源代码分析之调试信息对应的源代码
- 调试inetd,用来了解inetd的源代码
- inetd.c源代码分析之处理inetd.conf文件的结果
- telnetd源代码分析之如何调试源代码?
- 通过地址获取对应的源代码信息
- 通过地址获取对应的源代码信息收藏
- (转)通过地址获取对应的源代码信息
- 如何给Delphi的CPU调试窗口,增加对应源代码
- LLVM的源代码调试
- shoelace源代码分析,bochs调试winiboot2,int0x13的算法
- memcache 的源代码分析
- memcache 的源代码分析
- kgdb的源代码分析
- memcache 的源代码分析
- ActivityManagerService的源代码分析
- printf源代码的分析
- ArrayList源代码的分析
- LinkedList源代码的分析
- 【Android】神奇的android:clipChildren属性
- 第二届全国智能制造(中国制造2025)创新创业大赛总决赛在京举办
- 高德地图代码块总结
- 每个开发人员应该知道的 10 个 Linux 命令
- spring mvc 接受对象数组
- inetd源代码分析之调试信息对应的源代码
- linux字符驱动之查询按键
- 学渣到CTO的心路历程
- 结构型模式之装饰模式
- mvc mvp mvvm
- 汉字转拼音控制器
- 设计模式也可以这么简单
- 洛谷2704 炮兵阵地
- C#解析JSON字符串总结