网上找到类似的但是没有解决的…、真心求知道的指教一下
发表于 : 2013-03-18 23:07
纠结这个问题两天了,也试过别人的电脑,有的成功运行,有的运行失败。
就只是一个很简单的函数:open函数。
是一个各大教学网站都有的范例:用open打开一个不存在的文件,含O_CREAT|O_EXCL标识符则能创建文件。
但是实际情况如下
----------------------代码 test.c----------------------------
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
void main()
{
int fd, size;
char s[] = "test program.\n", buf[50];
fd = open("tmp.txt",O_WRONLY | O_CREAT | O_EXCL);
write(fd, s, sizeof(s));
close(fd);
fd = open("tmp.txt", O_RDONLY);
size = read(fd, buf, sizeof(buf));
close(fd);
printf("%s", buf);
}
------------------------------------------------------------
经过
$ gcc test.c -o test
$ ./test
之后得到的结果是空字符。
$ ls -l 查看tmp.txt文件权限为
---------- ... tmp.txt
文件内无任何内容。
查看过机子的umask,为0002。
试过 sudo ./test 执行程序,结果显示正常,但是tmp.txt文件权限不变,文件内依然无内容。
我的电脑环境: 双系统ubuntu 12.10与win7。
程序试过在ubuntu系统中执行,也试过在win7的虚拟机ubuntu中执行,结果一样。
已经弄了两个晚上了,各种尝试过,但是结果很桑心。真心希望懂的人告知一下。
学校断网了,大家的回信明天再回复,在这里先谢谢了!!
虽然有可能是我电脑问题,但是请明示到底是什么问题呢,可以尝试什么方法解决…、
就只是一个很简单的函数:open函数。
是一个各大教学网站都有的范例:用open打开一个不存在的文件,含O_CREAT|O_EXCL标识符则能创建文件。
但是实际情况如下
----------------------代码 test.c----------------------------
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
void main()
{
int fd, size;
char s[] = "test program.\n", buf[50];
fd = open("tmp.txt",O_WRONLY | O_CREAT | O_EXCL);
write(fd, s, sizeof(s));
close(fd);
fd = open("tmp.txt", O_RDONLY);
size = read(fd, buf, sizeof(buf));
close(fd);
printf("%s", buf);
}
------------------------------------------------------------
经过
$ gcc test.c -o test
$ ./test
之后得到的结果是空字符。
$ ls -l 查看tmp.txt文件权限为
---------- ... tmp.txt
文件内无任何内容。
查看过机子的umask,为0002。
试过 sudo ./test 执行程序,结果显示正常,但是tmp.txt文件权限不变,文件内依然无内容。
我的电脑环境: 双系统ubuntu 12.10与win7。
程序试过在ubuntu系统中执行,也试过在win7的虚拟机ubuntu中执行,结果一样。
已经弄了两个晚上了,各种尝试过,但是结果很桑心。真心希望懂的人告知一下。
学校断网了,大家的回信明天再回复,在这里先谢谢了!!
虽然有可能是我电脑问题,但是请明示到底是什么问题呢,可以尝试什么方法解决…、