|
列位高手,我在进程挂起之前写文件时出了问题,代码如下
if ( creat("/uc/tempfile",MODE100)<0 )
40 {
41 printf("creat file error.\n");
(gdb)
42 exit(0);
43 }
44
45 if( (fp=fopen("/uc/tempfile","r+"))==(FILE *)0 )
46 {
47 printf("open tempfile error.\n");
48 exit(0);
49 }
50
51 if ( data_process(&a)<0 )
(gdb)
52 {
53 printf("data process error.\n");
54 exit(0);
55 }
56
57
58 if ( fwrite(&a,sizeof(a),1,fp)!=1 )
59 {
60 printf("fwrite error.\n");
61 exit(0);
(gdb)
62 }
63
64 if ( kill(pid,SIGUSR1)<0 )
65 {
66 printf("kill signal error.\n");
67 exit(0);
68 }
69
70
71 if ( signal(SIGUSR2,sig_usr2)==SIG_ERR )
(gdb)
72 {
73 printf("can't catch SIGUSR1\n");
74 exit(0);
75 }
76
77 pause();
问题出在58行,但是运行的时候又没有提示"fwrite error",变量a是一个结构体,大小是
8个字节,执行完58以后tempfile仍然是0字节,而把pause()函数去掉就能正常写了,
请问这是为什么呢? |
|