Помогите решить хоть что-нибудь. 1. Как управлять правами доступа пользователей к файлам...

0 голосов
56 просмотров

Помогите решить хоть что-нибудь.
1. Как управлять правами доступа пользователей к файлам и директориям в ОС UNIX? Приведите соответствующие команды Shell и системные вызовы.
2. Составьте UNIX-программу на языке С, порождающую в качестве дочернего процесса свою копию и ожидающую ее завершения.
3. Как запустить и завершить фоновый (резидентный) процесс в UNIX?
4. Составьте программу на языке Shell, использующую оператор if.
5. Составьте UNIX программу на языке С, порождающую дочерний процесс и передающую ему данные по именованному каналу.
6. Произведите сравнение основных функций создания нового процесса в ОС Windows.


Информатика (20 баллов) | 56 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

1. Права доступа управляются с помощью утилиты chmod.

3. Фоновый процесс запускается, как и все остальные, только в конце ставится знак &Завершается процесс командой kill. Например:
kill -15 4213
где параметр -15 один из типов завершения программы, а 4213 его pid.

-15 (sigterm) — попытка осуществить завершение работы так, как это произошло бы при нормальных условиях.
-9 (kill) — принудительное завершение. Самый грубый метод. Гарантированно «убивает» процесс без возможности его корректного завершения.
(но есть и другие параметры)


4. Сравнение двух чисел.

#!/bin/bash
read -p "Введите первое число : " a
read -p "Введите первое число : " b
if [ $a != $b ]
then
    echo "Числа $a и $b не равны."
else
    echo "Числа $a и $b равны."

(9.4k баллов)
0

Приду, возможно допишу.

0

5. Передача сигнала дочернему процессу.

0

#include
#include
#include
#include

static int received = 0;

void readUsual(int sig)
{
if (sig == SIGUSR1)
{
received = 1;
}
}

0

int main()
{
printf("%s\n","Родительский процесс создан.");
printf("PID родительского процесса = %d\n",getpid());
signal(SIGUSR1,readUsual);
pid_t pid2 = fork();
if (pid2 < 0)
printf("Дочерний процесс не может быть создан.\n");
else
if (pid2==0)
{
printf("PID доченего процесса = %d\n",getpid());
while (!received);
printf("Сигнал принят дочерним процессом.\n");
}
else
{
kill(pid2,SIGUSR1);
printf("%s\n","Родительский процесс завершен.");
while (1);
}
return 0;
}

0

Я не знаю, что заказать...

0

Спасибо ОГРОМНОЕ!!!!

0

Как можно с вами связаться ?