Linux C命令编写
my_chmod的作用
在linux中我们可以用chmod命令进行修改文件的权限
- 先用 ls -l 列出文件信息
ycl@ycl-PC:~/Desktop$ ls -l
-rwxr-xr-x 1 ycl ycl 17080 3月 2 21:23 a.out
-rwxr-xr-x 1 ycl ycl 16672 3月 2 20:06 my_chmod
-rwxrwxrwx 1 ycl ycl 693 3月 1 21:33 my_chmod.c
---------- 1 ycl ycl 10320 3月 1 21:21 test.c
- 用chmod修改文件权限
ycl@ycl-PC:~/Desktop$ chmod 777 test.c
ycl@ycl-PC:~/Desktop$ ls -l
-rwxr-xr-x 1 ycl ycl 17080 3月 2 21:23 a.out
-rwxr-xr-x 1 ycl ycl 16672 3月 2 20:06 my_chmod
-rwxrwxrwx 1 ycl ycl 693 3月 1 21:33 my_chmod.c
-rwxrwxrwx 1 ycl ycl 10320 3月 1 21:21 test.c
- 下面我们用my_chmod进行修改
ycl@ycl-PC:~/Desktop$ ./my_chmod 000 test.c
ycl@ycl-PC:~/Desktop$ ls -l
-rwxr-xr-x 1 ycl ycl 17080 3月 2 21:23 a.out
-rwxr-xr-x 1 ycl ycl 16672 3月 2 20:06 my_chmod
-rwxrwxrwx 1 ycl ycl 693 3月 1 21:33 my_chmod.c
---------- 1 ycl ycl 10320 3月 1 21:21 test.c
my_chmod.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
int main(int argc, char **argv)
{
int mode;
int mode_u;
int mode_g;
int mode_o;
char *path;
if(argc < 3)
{
printf("%s <mode num><target file>\n",argv[0]);
exit(0);
}
mode = atoi(argv[1]);
if(mode > 777 || mode < 0)
{
printf("mode num error!\n");
exit(0);
}
mode_u = mode/100;
mode_g = (mode-mode_u*100)/10;
mode_o = mode-mode_u*100-mode_g*10;
mode = (mode_u*8*8)+(mode_g*8)+mode_o;
path = argv[2];
if(chmod(path,mode) == -1)
{
perror("chmod error");
exit(0);
}
return 0;
}
./my_chmod问题
你可能在输入./my_chmod 0 test.c时会发生一些问题
ycl@ycl-PC:~/Desktop$ ./my_chmod 000 test.c
bash: ./my_chmod: 没有那个文件或目
我们编译文件时一般是
gcc my_chmod.c
./a.out
但在本程序中会有参数需要输入,我们可以
./a.out 000 test.c
但如何使用 my_chmod 000 test.c 呢?下面告诉你
ycl@ycl-PC:~/Desktop$ gcc my_chmod.c -o my_chmod
ycl@ycl-PC:~/Desktop$ ./my_chmod 0 test.c
有了gcc my_chmod.c -o my_chmod这一部你就可以产生一个my_chmod文件,就想你用./a.out时产生了一个a.out文件一样