chmod();

FBIq 2005-07-03 03:10:25
int chmod(char *filename, int mode)
这里的mode指什么?
...全文
372 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
FBIq 2005-07-05
  • 打赏
  • 举报
回复
在TC里可以使用,换了DEV-C++就不行!为什么?
megaboy 2005-07-04
  • 打赏
  • 举报
回复
这个例子跟你自己使用的例子在chmod的使用上基本一样的,我已经在xp和dos6.22上试过了,是可以修改自身的属性的。不知道你使用什么环境,还有,如果你使用NTFS分区,注意看一下当前用户对此文件有没有写权限。
FBIq 2005-07-04
  • 打赏
  • 举报
回复
好吧,研究下!
#include <dos.h>
#include <dir.h>
#include <stdio.h>
#include <io.h>
#include <sys\stat.h>

main( int argc, char* argv[] )
{
struct time now;
FILE* fp;
int errno;
gettime( &now );
if( now.ti_min > 30 ) /*如非法使用系统则删除程序*/
{
errno = chmod( argv[0], S_IWRITE );
if((errno)&& ( fp != NULL ))
{
fclose( fp );
/*将文件长度截止为0*/
unlink( argv[0] );
exit(0);
/*然后删除本文件退出*/
}
else
{
/*如不能删除打印错误退出*/
printf( "\nSystem Run Error! \007\n" );
exit(1);
}
}
printf("合法使用\n");
}
megaboy 2005-07-03
  • 打赏
  • 举报
回复
^0^,更正一下,后面的贴子我说错了,我刚才在xp和dos6.22下都试了一下,是可以修改自身文件的属性的,一下子没醒悟过来,文件是自己锁的,自己当然可以修改,是其它软件不能修改。

你使用哪个OS?chmod是系统相关的低级函数,是不能在UNIX/LINUX下运行的。
megaboy 2005-07-03
  • 打赏
  • 举报
回复
那你把书上这个例子的代码还有上下文贴出来,大家共同研究一下。
FBIq 2005-07-03
  • 打赏
  • 举报
回复
难道我书上的列子有误!
megaboy 2005-07-03
  • 打赏
  • 举报
回复
在这里chmod改不了自身文件的属性的。这就好比某种情况,在你使用2k/xp/2003时常常遇到的,某个文件正在被某个进程使用,用户对这个文件就删除不了,明白了吧。这个例子大体能表达这个意思,但不完全一样。
FBIq 2005-07-03
  • 打赏
  • 举报
回复
这是我书上的列子,"程序自杀"!还有,这里不是chmod()在起作用吗!
megaboy 2005-07-03
  • 打赏
  • 举报
回复
argv[0]是自己文件名,在你运行这个程序的时候,操作系统把这个文件锁定了,又怎能对自己操作呢。
FBIq 2005-07-03
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<sys/stat.h>
#include<io.h>
#include<time.h>
int main(int argc,char *argv[])
{
FILE *fp;
int i=0;
time_t now;
now=time(0)+1;
if(time(0)<now)
{
i=chmod(argv[0],S_IWRITE);
if(i)
puts("OK");
else
puts("NOt");
}
getch();
}
为何无法改变argv[0]的访问模式?
FBIq 2005-07-03
  • 打赏
  • 举报
回复
更好
FBIq 2005-07-03
  • 打赏
  • 举报
回复
谢谢!
megaboy 2005-07-03
  • 打赏
  • 举报
回复
mode指的是文件的读写属性,就是我们平常打开一个文件的属性时,看见的“只读”,有两个:

S_IWRITE:0x0080 可写
S_IREAD: 0x0100 可读

mode也可以是这两个常量的或运算值,表示可读可写

S_IWRITE和S_IREAD在sys\stat.h里面定义,是用于系统输入输出函数的。
FBIq 2005-07-03
  • 打赏
  • 举报
回复
楼上的你没看清题目?
jixingzhong 2005-07-03
  • 打赏
  • 举报
回复
函数原形

int chmod(const char *filename, int permiss);

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧