Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 3
Регистрация: 13.04.2011
Сообщений: 91
Записей в блоге: 1

Аналог команды chmod

10.06.2012, 16:38. Показов 2103. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
возможно ли создать аналогичную программу для изменения доступа? вот я пытался, но у меня не особо получилось.. надо чтобы цифры считывал и устанавливал права а получилось только на да и нет.. как переоранизовать чтобы писать после имени файла цифры и считывать их и по ним ставить права?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdlib.h>
#include <fcntl.h>
 
#define ANSWER_SIZE 256
 
void add_mode (mode_t * mode, const char* answer, mode_t bit)
{
    if(answer[0]=='y')
    {
        *mode |=bit;
    printf("set\n");
        } else printf("not set\n");
}
 
int main(int argc, char ** argv)
{
    char* answer;
    mode_t mode = 0000;
 
    if(argc<2)
    {
    printf("%s","Too few arguments\n");
    return 1;
    }
 
answer = (char *) malloc (sizeof (char) * ANSWER_SIZE);
if (answer == NULL)
{
    printf("%s", "*malloc() error\n");
        return 1;
}
 
printf("User can read: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode (&mode, answer, S_IRUSR);
 
 
 
printf("User can write: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IWUSR);
 
printf("User can execute: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IXUSR);
 
printf("Group can read: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IRGRP);
 
printf("Group can write: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IWGRP);
 
printf("Group can execute: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IXGRP);
 
 
printf("World can read: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IROTH);
 
printf("World can write: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IWOTH);
 
printf("World can execute: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_IXOTH);
 
printf("SUID: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_ISUID);
 
printf("SGID: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_ISGID);
 
printf("Sticky: ");
printf("\nPress y for YES and other for NO\n");
scanf("%s", answer);
add_mode(&mode, answer, S_ISVTX);
 
if (chmod(argv[1], mode) == -1 )
{
printf("%s", "chmod() error\n");
return 1;
}
free (answer);
return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2012, 16:38
Ответы с готовыми решениями:

Разделить исходный файл по n-му количеству строк(аналог команды split)
Здравствуйте. Столкнулся с проблемой. Не получается разделить файл. Код: void splitFile(string path) { int s = 0; char S; ...

Аналог команды ps aux
Скрипты в оболочке bash. Написать скрипт-аналог команды ps aux В скрипте реализовать опцию --sort для сортировки по списку: UID -...

Аналог команды из Windows
Всем доброго вечера! Столкнулся с проблемой , что не знаю аналога команды start /wait из Windows в Linux! Кто знает помогите, срочно нужно)...

2
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.06.2012, 16:59
Можно посмотреть, как реализован стандаврный chmod
Bash
1
2
3
4
5
mkdir coreutils
cd coreutils
apt-get source coreutils
cd coreutils*/src
vim chmod.c
1
0 / 0 / 3
Регистрация: 13.04.2011
Сообщений: 91
Записей в блоге: 1
10.06.2012, 17:34  [ТС]
Цитата Сообщение от soon Посмотреть сообщение
Можно посмотреть, как реализован стандаврный chmod
Bash
1
2
3
4
5
mkdir coreutils
cd coreutils
apt-get source coreutils
cd coreutils*/src
vim chmod.c
кроме одного кода ниже не нашел ничего полезного.. даже перекомпилить не удается

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 while ((c = getopt_long (argc, argv,
                           "Rcfvr::w::x::X::s::t::u::g::o::a::,::+::=::",
                           long_options, NULL))
         != -1)
    {
      switch (c)
        {
        case 'r':
        case 'w':
        case 'x':
        case 'X':
        case 's':
        case 't':
        case 'u':
        case 'g':
        case 'o':
        case 'a':
        case ',':
        case '+':
        case '=':
          /* Support nonportable uses like "chmodfate -w", but diagnose
             surprises due to umask confusion.  Even though "--", "--r",
             etc., are valid modes, there is no "case '-'" here since
             getopt_long reserves leading "--" for long options.  */
          {
            /* Allocate a mode string (e.g., "-rwx") by concatenating
               the argument containing this option.  If a previous mode
               string was given, concatenate the previous string, a
               comma, and the new string (e.g., "-s,-rwx").  */
 
            char const *arg = argv[optind - 1];
            size_t arg_len = strlen (arg);
            size_t mode_comma_len = mode_len + !!mode_len;
            size_t new_mode_len = mode_comma_len + arg_len;
            if (mode_alloc <= new_mode_len)
              {
                mode_alloc = new_mode_len + 1;
                mode = X2REALLOC (mode, &mode_alloc);
              }
            mode[mode_len] = ',';
            strcpy (mode + mode_comma_len, arg);
            mode_len = new_mode_len;
 
            diagnose_surprises = true;
          }
          break;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2012, 17:34
Помогаю со студенческими работами здесь

Аналог команды file
Так уж получилось, что мне в лабе выпал сложный вариант, по крайней мере для меня, а звучит он так: разработайте собственный аналог...

Аналог команды strcpy в С#
Есть код на С#: class Program {// Вывести на экран красным цветом ту строку, где наименьшее число пробелов. static...

Аналог команды Windows TREE
На входе: каталог. На выходе: дерево каталогов, начиная от указанного. Параметр командной строки -f включает режим отображения еще и файлов.

Аналог команды dir на асемблере
Помогите создать програму на асемблере под Windows XP, для поиска файлов в папке с выводом размера и даты создания всех найденых файлов,...

Аналог команды Windows HELР
Помогите написать вот такой код, чего то я даже не представляю что с этим сделать можно :( : На входе: имя команды. На выходе: справка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru