2
語境
我是一個自我學習,我得到了我的第一個插座今天的工作與C語言代碼。 很高興。的fcntl()和F_GETFL:奇怪的結果
問題
假設我們有sfd
,套接字文件描述符。
當執行此代碼:
flags = fcntl (sfd, F_GETFL, 0);
printf("FD MODE 1 - %d\n",fcntl(sfd,F_GETFL));
flags |= O_NONBLOCK;
s = fcntl (sfd, F_SETFL, flags);
printf("FD MODE 2 - %d\n",fcntl(sfd,F_GETFL));
它輸出:
2
2050
但我的fcntl-linux.h說:
...
/* open/fcntl. */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
#ifndef O_CREAT
# define O_CREAT 0100 /* Not fcntl. */
#endif
#ifndef O_EXCL
# define O_EXCL 0200 /* Not fcntl. */
#endif
#ifndef O_NOCTTY
# define O_NOCTTY 0400 /* Not fcntl. */
#endif
#ifndef O_TRUNC
# define O_TRUNC 01000 /* Not fcntl. */
#endif
#ifndef O_APPEND
# define O_APPEND 02000
#endif
#ifndef O_NONBLOCK
# define O_NONBLOCK 04000
....
問題
即使按位操作I c無辜得到我怎麼終於得到2050或2.
任何人爲我清除路徑?
吹毛求疵:不要把它稱爲「腳本」,但只是「代碼」。然而,一個精心製作的問題:1+ – alk
謝謝alk!我現在糾正它:) – Larry