亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3489 | 回復(fù): 14
打印 上一主題 下一主題

apue fcntl函數(shù)的問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-09-12 16:09 |只看該作者 |倒序?yàn)g覽
#include "apue.h"
#include <fcntl.h>
int set_f1(int fd,int flags){
  int val;
  if((val=fcntl(fd,F_GETFL,0))<0){
    printf("fcntl gettfl error\n");
    exit(-1);
  }
  val |=flags;
  if(fcntl(fd,F_SETFL,val)<0){
    printf("fcntl F_SETFL error\n");
    exit(-2);
  }
}
int main (int argc,char *argv[])
{
  int val;
  int val1;
  int fd;
  //  if(argc!=2){
  // printf("usage:a.out <descriptor>\n");
  // exit(-1);
  //}
  //fd=atoi(argv[1]);
  if((fd=open("tt",O_RDWR | O_APPEND,FILE_MODE))<0){
    printf("error creat\n");
    exit(-1);
  }
   printf("fd:%d\n",fd);
   set_f1(fd,O_SYNC);
  // printf("fd:%s",atoi(argv[1]));

  if((val=fcntl(fd,F_GETFL,0))<0){
    printf("fcntl error for fd %d\n",atoi(argv[1]));
    exit(-1);
  }
  switch (val & O_ACCMODE){
  case O_RDONLY:
    printf("read only");
    break;
  case O_WRONLY:
    printf("write only");
    break;
  case O_RDWR:
    printf("read write");
    break;
  default:
    {
      printf("unknow access mode");
      exit(-3);
    }
  }
    if(val & O_APPEND)
      printf(",append");
    if(val & O_NONBLOCK)
      printf(",nonblocking");
#if defined(O_SYNC)
    if(val & O_SYNC)
      printf(",synchronous writes");
#endif
#if !defined(_POSIX_C_SOURCE) && defined (O_FSYNC)
    if(val & O_FSYNC)
      printf(",synchronous writes ");
#endif
    putchar('\n');
    exit(0);
}
為什么輸出是read write,append
而不是read write,append,synchronous writes
小弟實(shí)在 是不理解  望大家賜教   謝謝了

[ 本帖最后由 uid500 于 2008-9-12 16:12 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-09-12 16:30 |只看該作者
....................,有誰幫忙啊,謝謝了

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-09-12 17:14 |只看該作者
我在機(jī)子上也試了一下,出現(xiàn)同樣的結(jié)果。是由于給set_f1()函數(shù)的參數(shù)是值傳遞,退出該函數(shù)后,fd 并沒改變,還是原來的值。所以'synchrous write'才沒顯示出來。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-09-12 17:23 |只看該作者
原帖由 disheng727 于 2008-9-12 17:14 發(fā)表
我在機(jī)子上也試了一下,出現(xiàn)同樣的結(jié)果。是由于給set_f1()函數(shù)的參數(shù)是值傳遞,退出該函數(shù)后,fd 并沒改變,還是原來的值。所以'synchrous write'才沒顯示出來。



不是吧,著兩個(gè)函數(shù)放在同一個(gè)函數(shù)中也是一樣的啊
fd 只不過是整數(shù)哦,無所謂的

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-09-12 17:37 |只看該作者
有沒有高手幫忙解釋一下啊,在網(wǎng)上查了很久,看了很多帖子,但是還是不理解啊 :wink:

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-09-12 17:40 |只看該作者
man手冊的意思是Linux上不能更改O_SYNC。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2008-09-12 17:41 |只看該作者
On Linux this command can only  change  the  O_APPEND,  O_NONBLOCK,
              O_ASYNC, and O_DIRECT flags.

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2008-09-12 17:46 |只看該作者
BSD-derived systems and Linux always return an error

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2008-09-12 17:49 |只看該作者
原帖由 insmile 于 2008-9-12 17:46 發(fā)表
BSD-derived systems and Linux always return an error


。。。lz這個(gè)也沒報(bào)錯(cuò)啊,奇怪

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2008-09-12 17:56 |只看該作者
原帖由 5毛黨黨員 于 2008-9-12 17:41 發(fā)表
On Linux this command can only  change  the  O_APPEND,  O_NONBLOCK,
              O_ASYNC, and O_DIRECT flags.


呵呵看見了,以后要多看看man 但是如果改成其他的行嗎?還有二樓的講法對嗎
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP