【问题标题】:System call open() permissions系统调用 open() 权限
【发布时间】:2012-10-21 13:28:44
【问题描述】:

我使用系统调用open()打开一个文件。

if ((fd2 = open(logFile, O_RDWR |O_APPEND | O_CREAT ), 0666) == -1)
    DieWithError("open() failed");

我的文件 FTP_track.log 创建没有任何问题。问题是虽然我有模式0666,它对所有人都是读写的,但我无法在unix中打开文件。我必须更改文件属性的权限才能读取和写入。

有什么想法吗?谢谢你。

【问题讨论】:

  • 可能你的 umask 禁止了所有人的写权限。

标签: c


【解决方案1】:

您的行的问题是括号不匹配。您的表达式被解析为fd2 = open(), 0666。在 C 中,表达式 expr1, expr2 的值是 expr2,所以你的 if 语句基本上是 fd2 = 0666

【讨论】:

  • 同意括号是错误的;不同意分析;赋值的优先级高于逗号,所以它是fd2 = open(...),然后0666是与-1相比的值。
  • 谢谢!!!你是对的......文件创建正确,我没有错误,再次感谢。
猜你喜欢
  • 1970-01-01
  • 2014-01-03
  • 2015-06-02
  • 2015-01-06
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多