我正在写的功能非常像一个聊天室和碰到这个问题就来了一个TCP服务器。
当用户连接,创建一个子进程来为用户服务。
当用户登录时,我自己的用户名存储到一个文本文件, online.txt
但是,当用户注销时,我需要从删除用户online.txt
(的问题),父则signals
一个reaper()
并杀死了孩子。
我的问题是:
Q1:如何我可以在附加信息来收割挤压(如用户使用的登录用户名),因此它也可以删除该用户online.txt
? 还是有另一种更好的方法来做到这一点?
Q2:哪里sig
在reaper()
从获取其值? 我可以添加额外的参数来收割?
Q3:我可以用孩子的PID为某种对的login.txt主键的? 如果是这样,我怎么能检索过程中,孩子的PID reaper()
这是由父母叫什么名字?
收割者看起来是这样的:
void reaper(int sig)//where does sig come from?
{
int status;
while (waitpid(-1, &status, WNOHANG) >= 0)
;
}
由父所使用的信号是这样的:
(void) signal(SIGCHLD, reaper);//how can I add more parameters?
谢谢你在前进,我希望问3个问题,在一次是不是太贪婪。
对任何问题的任何有识之士将不胜感激。