關於wait和waitpid
阿新 • • 發佈:2018-12-19
今天看了第五章,對於wait和waitpid這塊一直沒有搞的特別懂。
自己修改了下sigchldwait.c裡的方法,在迴圈裡呼叫了wait。
while((pid = wait(&stat))>0)
printf("child %d terminated\n", pid);
然後執行tcpcli04,建立了五個子程序,第一個輸入結束後手動關閉,讓第二個輸入
#include "unp.h"
int
main(int argc, char **argv)
{
int i, sockfd[5];
struct sockaddr_in servaddr;
if (argc != 2)
err_quit("usage: tcpcli <IPaddress>");
for (i = 0; i < 5; i++) {
sockfd[i] = Socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr. sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
Connect(sockfd[i], (SA *) &servaddr, sizeof(servaddr));
}
str_cli(stdin, sockfd[0]); /* do it all */
Close (sockfd[0]);
str_cli(stdin, sockfd[1]);
exit(0);
}
如果按書上說,wait會在其他子程序沒有終止的時候阻塞,怎麼還能繼續回射我後續的輸入呢。。記錄一下吧,暫時好像搞不懂。
還有書上的例子
在我電腦上五個殭屍程序都會被清理啊。。但是man wait也是要阻塞。
絕望。。