社区
CGI
帖子详情
为什么我的fopen后面的参数不能用"r+"??
create3000
2006-06-19 09:23:59
我是一个初学者。
现在在Red Hat 9上面,使用Apache,版本不知道,反正是自带的那个。
我用c语言写了一个CGI程序,需要打开一个文件,需要写入。代码如下:
FILE *in;
in = open("文件名","r+");
fputs(buf, in);
fclose(in);
把"r+"换成"r"就能使用,但是不能写入。为什么呀?
...全文
225
10
打赏
收藏
为什么我的fopen后面的参数不能用"r+"??
我是一个初学者。 现在在Red Hat 9上面,使用Apache,版本不知道,反正是自带的那个。 我用c语言写了一个CGI程序,需要打开一个文件,需要写入。代码如下: FILE *in; in = open("文件名","r+"); fputs(buf, in); fclose(in); 把"r+"换成"r"就能使用,但是不能写入。为什么呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
create3000
2006-06-20
打赏
举报
回复
多谢。
还需要好好学习呀。
newzy
2006-06-20
打赏
举报
回复
web 服务器, 如apache 等一般要求不能以 root 的身份运行
注: 以 root 方式启动后, web 服务一般会再以 nobody 身份(或用户强制指定的身份)
重新启动一个新的进程, 并退出自己. 原因是以 root 用户启动具有很大的安全隐患,
nobody 不属于已定义的任何组, 故属于其它组.
从你列出的权限 其它组只有 -x 权限, 显然 cgi 程序无法进行读写操作.
依照前面提到的方法, 根据你的具体情况设定下目录的读写权限.
祝你好运!
create3000
2006-06-20
打赏
举报
回复
权限都是 -rwxr-xr-x
应该可以运行。
我看了httpd.conf配置文件了,里面说有一些用户是没有写权限的。
里面默认的apache用户,我想把它改为root,可是改后httpd不能启动了。
请问那个用户可以有写的权限呀?
newzy
2006-06-20
打赏
举报
回复
ls -al <目录名>/.. -R
把权限列出来看看
ykj76
2006-06-19
打赏
举报
回复
r表示只读,,当然不能写了
create3000
2006-06-19
打赏
举报
回复
上面写错了。是:
in = fopen("...","r+");
create3000
2006-06-19
打赏
举报
回复
多谢,还是不行。
那个在shell下可以运行。有运行权限,哪个要写的文件也有可写的权限。
我在httpd.conf里面也看了用户,它使用的是apache用户,我改为root还是不行。
newzy
2006-06-19
打赏
举报
回复
改下目录的执行权限,
chmod a+rwx <目录名> -R
原因是(默认的)nobody 属于其它组, 一般只有读权限, 无写权限所致.
祝你好运!
create3000
2006-06-19
打赏
举报
回复
多谢。
文件当然存在。
并且在提示行的情况下,使用"r+"是可以的。可以写入文件,没有问题。
只是在网页调用这个cgi文件的时候就在这个地方报错。没有办法设置。
我去下这个工具看看。
newzy
2006-06-19
打赏
举报
回复
ANSI C 规定:
"r+" 表示可读可写, 但有一个前提, 就是文件必须事存在的. 否则返回失败.
请用: "w+" 或 "a+"
REF:
"r+" Opens for both reading and writing. (The file must exist.)
"w+" Opens an empty file for both reading and writing.
If the given file exists, its contents are destroyed.
建议:
C 写 CGI 试试专业开发CGI 的C 工具 CSP/eybuild
http://www.eybuild.com
Good Luck!
《C语言深度解析》第9、10章——位操作 /c标准IO、网络编程/线程/链表
本课程主要讲解以下内容...标准IO与文件IO、常见标准IO函数有哪些、
fopen
/fclose)、标准io输出函数、标准io输入函数等 4.多线程、网络编程、数据库、数据结构、顺序表、链表、单链表、双链表、队列/栈、Linux内核链表
fopen
函数的
参数
r+ w+ r w的区别 ,如何更新文件内容
为什么
不能
r+,因为是追加到文件
后面
的,无法替换原有内容。文件不存在,会创建文件;文件存在就清空文件内容再写。再用w,然后fclose;此前一直很好奇,r+,w+都可以读写,有什么差别捏?
fopen
函数的
参数
r+ w+ r w...
fopen
参数
'rb' 与'rb+'引发的黑色血案
目录 ...为了把windows上的算法库移植到linux上,文件读写部分去掉了CreateFile ,换成了
fopen
,一切都是很平稳,没啥编译错误,但是当我运行读图软件的时候,一张黑色的图片出现了,so, what t...
fopen
后面
参数
对文件操作的相应关系
fp=
fopen
(folderName,"a"); r 以只读方式打开文件,该文件必须存在。 r+ 以可读写方式打开文件,该文件必须存在。 rb+ 读写打开一个二进制文件,允许读数据。 rw+ 读写打开一个文本文件,允许读和写。 w ...
C++
fopen
()函数的
参数
说明
格式:文件指针名=
fopen
(文件名,使用文件方式)
参数
: 文件名 意义 "C://TC//qwe.txt" 文件C:/TC/qwe.txt "qwe.txt" 和程序在同一目录下的qwe.txt 文件使用方式 意 义 “rt” 只读打开一个文本文件,只允许读数据 ...
CGI
2,204
社区成员
4,518
社区内容
发帖
与我相关
我的任务
CGI
Web 开发 CGI
复制链接
扫一扫
分享
社区描述
Web 开发 CGI
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章