select-function

    2熱度

    4回答

    大部分時間這段代碼工作得很好。但是有時當可執行文件運行一段時間後,select()會立即超時,然後進入一個奇怪的狀態,它會一直被調用,立即超時。然後它必須從外面被殺死。 我的猜測是,標準輸入更改加班的方式是錯誤的 - 這是選擇阻止的方式。 環顧StackOverflow,大多數人的select()問題似乎都可以通過確保每次使用宏重置(FD_ZERO & FD_SET)並使用正確的初始參數進行選擇來

    3熱度

    1回答

    爲什麼下面的代碼打印'read():資源暫時不可用'80%的時間?這是EAGAIN代碼,這是一樣的會阻止,這意味着沒有數據等待讀取,但選擇將返回1說有數據(在Linux中進行測試): #include <time.h> #include <unistd.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #in

    1熱度

    1回答

    我似乎遇到了管道和選擇的問題。 環境:必須編程東西,將這樣被殼執行: LOGN [--tick N] CMD [參數] [,在cmd [參數] ... 基本上,它是一個程序多個節目同時進行。 限制條件:每個輸出線具有開始與在格式的printf前它的命令號碼「%d:%S」 即: 0: first line of first command. 0: second line of first comm

    1熱度

    2回答

    fd_set rset; struct timeval tv; FD_ZERO(&rset); FD_SET(sockfd, &rset); tv.tv_sec = 1; tv.tv_usec = 0; for(;;) { for(count = 0; count < elements in sockaddr_in array; count++) {

    0熱度

    1回答

    最近我做了this部分代碼。 它可以工作,但select()工作不好。 當它從服務器得到最後一個回覆時,它開始在回覆字符串的開頭重複上一個回覆字符串,並帶有一些奇怪的字符。 所以看看這個: :[email protected] PRIVMSG testuser1 :VERSION �C���C��[email protected] PRIVMSG testuser1 :VERSION �C��

    3熱度

    1回答

    我有兩個節點與套接字進行通信。每個節點都有一個讀線程和一個寫線程與另一個進行通信。下面給出的是讀線程的代碼。使用該代碼的兩個節點之間的通信正常工作。但我試圖在這個線程中添加一個select函數,這給我帶來了一些問題(select中的代碼在註釋中,我只是取消註釋來添加功能)。問題是一個節點沒有收到消息,只是超時。另一個節點從另一個節點獲取消息,但從不超時。這個問題不存在(兩個節點發送和接收消息)沒有

    3熱度

    2回答

    我想使用select()函數等待1秒,因爲我的程序使用信號來控制的東西,所以sleep()會過早返回。奇怪的是,當使用select()它也過早返回。 我打電話選擇這樣 struct timeval timeout; timeout.tv_sec = 10; timeout.tv_usec = 1000000; select (0 ,NULL, NULL, NULL, &timeout);

    2熱度

    1回答

    我想利用select系統調用來複STDIN和的sockfd(連接到服務器),使得我必須聽都STDIN和的sockfd並根據所在服務器的數據可供閱讀我必須繼續。 注:#定義STDIN 0 這是當我這樣做會發生什麼。 我連接到服務器的常用方法[插座(),然後連接()] 我添加STDIN和連接套接字描述符「的sockfd」到FD_SET(命名爲「讀集」),意味着閱讀。 然後我打電話給select()。

    1熱度

    3回答

    這可能是一個簡單的問題,但我找不到明確的答案。我在c代碼中有多個線程,其中一個使用select等待n秒。我的問題是,它會阻止整個過程n秒(如usleep),或者選擇塊只是調用線程(更像nanosleep)。 感謝您的答案。