Ich portiere C / Pro * C-Code von UNIX nach Linux. Der Code lautet:
#define __NFDBIT (8 * sizeof(unsigned long))
#define __FD_SETSIZ 1024
#define __FDSET_LONG (__FD_SETSIZ/__NFDBIT)
typedef struct {
unsigned long fds_bits [__FDSET_LONG];
} __ernel_fd_set;
typedef __ernel_fd_set fd_set_1;
int main()
{
fd_set_1 listen_set;
int listen_sd;
int socket_id;
FD_ZERO(&listen_set);
socket_id = t_open("/dev/tcp", O_RDWR|O_NONBLOCK, (struct t_info *) 0);
if ( socket_id <0 )
{
exit(FAILURE);
}
return 0;
}
Unter UNIX ist der Wert von socket_id unter > 0
Linux -1
. Grund ist in UNIX, es gibt eine /dev/tcp
. Dies ist unter Linux nicht vorhanden. Auch unter UNIX ist diese tcp
Datei eine Zeichenspezialdatei, die sich von der normalen Datei unterscheidet.
Gibt es eine Möglichkeit, unter Linux dieselbe Zeichenspezialdatei wie unter UNIX zu erstellen, oder wie geht das weiter?