我编写了一个简短的 C 程序来打开和关闭 unix 文件缓冲。下面的代码是打开它。我使用 fcntl 获取设置,设置 O_SYNC 标志,然后将设置写回内核。但是当我再次获得设置时,它们的 O_SYNC 标志没有设置。
int result, s;
s = fcntl(*fd, F_GETFL);
s |= O_SYNC; // set SYNC bit
result = fcntl(*fd, F_SETFL, s);
if( result == -1 )
perror("setting SYNC");
else
{
// Check buffering is on
s = fcntl(*fd, F_GETFL); //
if((s & O_SYNC) == O_SYNC) // check if SYNC bit is set
printf("In function buffering_off(): Buffering is OFF\n");
else
printf("In function buffering_off(): Buffering is ON\n");
}
任何帮助,将不胜感激。干杯:)