1. 程式人生 > >關於wait和waitpid

關於wait和waitpid

今天看了第五章,對於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也是要阻塞。
絕望。。