日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数chown

發(fā)布時間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数chown 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、chown 命令

下面以實例簡單講解下 chown 的使用方法。當(dāng)前登錄的賬號是 sunbin

  • 創(chuàng)建測試文件

當(dāng)前 test.txt 文件所有者是sunbin,所屬組也是sunbin。

  • 利用 chown 命令修改 test.txt 的所有者和所屬組

.可以看到,test.txt 的擁有者變成了 root,所屬組變?yōu)榱藃oot。

?

二、chown函數(shù)

1. chown函數(shù)原型:

#include <unistd.h> int chown(const char *pathname, uid_t owner, gid_t group);若成功,返回0;若出錯,返回-1

參數(shù):

  • pathname:要更改的文件名
  • owner:擁有者 uid
  • gropu:所屬組 gid

?

需要注意的是,這個函數(shù)接受的是 uid 和 gid,而不是以字符串表示的用戶名和用戶組。所以需要另一個函數(shù)getpwnam根據(jù)字符串名稱來獲取 uid 和 gid. 它的原型如下:

?

1. 測試代碼:

struct passwd {char *pw_name; // usernamechar *pw_passwd; // user passworduid_t pw_uid; // user IDgid_t pw_gid; // group IDchar *pw_gecos; // user informationchar *pw_dir; // home directorychar *pw_shell; // shell program }struct passwd *getpwnam(const char *name);

?

1. 測試代碼:

#include <pwd.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h>int main(int argc, char *argv[]) {uid_t uid;struct passwd *pwd;char *endptr;if (argc != 3 || argv[1][0] == '\0') {fprintf(stderr, "%s <owner> <file>\n", argv[0]);exit(EXIT_FAILURE);}uid = strtol(argv[1], &endptr, 10); /* Allow a numeric string */if (*endptr != '\0') { /* Was not pure numeric string */pwd = getpwnam(argv[1]); /* Try getting UID for username */if (pwd == NULL) {perror("getpwnam");exit(EXIT_FAILURE);}uid = pwd->pw_uid;}if (chown(argv[2], uid, -1) == -1) {perror("chown");exit(EXIT_FAILURE);}exit(EXIT_SUCCESS); }

輸出結(jié)果:


?

strtol用法:鏈接

#include <stdlib.h> long int strtol(const char *nptr, char **endptr, int base);

測試代碼:

#include <stdio.h> #include <stdlib.h>int main() {char buffer[20] = "10379cend$3";char *stop;printf("%d\n", strtol(buffer, &stop, 2)); //2printf("%s\n", stop);char a[] = "100";char b[] = "100";char c[] = "ffff";printf("a = %d\n", strtol(a, NULL, 10)); //100printf("b = %d\n", strtol(b, NULL, 2)); //4printf("c = %d\n", strtol(c, NULL, 16)); //65535 }

輸出結(jié)果:

?

參考資料

1.?17-chown 函數(shù)

總結(jié)

以上是生活随笔為你收集整理的函数chown的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。