当程序在线程函数中进入休眠sleep (1)
时,它突然结束。它与线程有关吗?
void send_packet(int sockfd, struct sockaddr_in dest_addr)
{
int packetsize;
while( nsend < MAX_NO_PACKETS)
{
printf("send %d\n", nsend);
nsend++;
packetsize=pack(nsend);
if( sendto(sockfd,sendpacket,packetsize,0,(struct sockaddr *)&dest_addr,sizeof(dest_addr) )<0 )
{
perror("sendto error");
continue;
}
printf(" %d\n", packetsize);
sleep(1);
}
}
int find_host(void * arg)
{
send_packet(sockfd, present_addr);
recv_packet(sockfd, recvpacket, from);
pthread_create(&ntid, NULL, find_host, (void *)&inaddr);
答案 0 :(得分:1)
在一条评论中,您写道主线程已结束。取自pthread_create man page:
新线程以下列方式之一终止:
[...]
*进程中的任何线程都调用exit(3)或主线程
从main()执行返回。这导致所有的终止
这个过程中的线程。
您的主线程需要pthread_join
等待发件人终止。