日期:2014-05-16  浏览次数:20551 次

进程问题
大致代码是这样的:
pid=fork();

if(pid==0)
{
          //执行子进程代码
}
else     //执行父进程代码
{
        wait(0);
}

在子进程中是用socket接收数据,如果在父进程中用了wait(0);那么程序和没有创建进程一样,一直在那里等待接收的数据,而不去做其它事情。但是如果不用wait(0);那么程序接收的数据又没有保存下来,求达人指教

------解决方案--------------------
我想你要的是这样的一个程序。
1 /***************************************************************************
2 * echo_server.c
3 *
4 * Fri May 25 21:26:31 2007
5 * Copyright 2007 User
6 * Email <kf701.ye AT gmail.com>
7 ****************************************************************************/
8
9 #include <pthread.h>
10
11 #include "kf701.h "
12
13 void *thread_main( void *data )
14 {
15 /* detach thread */
16 pthread_detach( pthread_self() );
17
18 int fd = *((int*)data);
19 char buf[1024];
20
21 int ret = read( fd, buf, sizeof(buf) );
22 if( ret <= 0 )
23 {
24 sys_err( "%s: read err\n ", __func__);
25 goto err_p;
26 }
27 sys_debug( "read = %s ", buf);
28
29 /* echo data to client */
30 write( fd, buf, ret );
31 err_p:
32 close( fd );
33 free( data );
34 return (void*)0; /* thread exit */
35 }
36
37 void run(int fd)
38 {
39 int *data = malloc( sizeof(int) );
40 *data = fd;
41 create_normal_thread( thread_main, data );
42 }
43
44 int main()
45 {
46 debug_verbose = 4;
47 sys_debug( "tcp listen port 8080 ...\n ");
48 tcp_server_select_2( 8080, run );
49 return 0;
50 }