Форум программистов, компьютерный форум, киберфорум
С под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/37: Рейтинг темы: голосов - 37, средняя оценка - 4.54
2 / 2 / 0
Регистрация: 20.05.2013
Сообщений: 8
1

Написать программу по вводу-выводу

20.05.2013, 12:12. Показов 7393. Ответов 13

Здравствуйте. Помогите пожалуйста с выполнение лабораторных работ.. Через неделю экзамен, а я ничего не понимаю.
Буду очень признателен и благодарен..

задание 1. (тема: ввод-вывод)
Написать программу, которая получает со стандартного потока ввода права доступа к файлам каталога, и выводит их в стандартный поток вывода, подменяя все группы прав rwx словом ВСЕ. Протестировать на различных каталогах с использованием конвейеров в различных комбинациях вашей программы и команд ls, sort, head, tail.

В зависимости от варианта добавьте к своей программе следующую функциональность:
В домашнем каталоге создайте четыре файла, в которые помещайте имена файлов с правами доступа следующим образом: в первый, если права rwx установлены для владельца; во второй, если для группы; в третий, если для остальных; в четвертый, если такой группы прав не установлено ни для кого.

PS. при выполнении нужно использовать системные вызовы
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2013, 12:12
Ответы с готовыми решениями:

Литература по файловому вводу-выводу
Привет Перерыл кучу литературы по плюсам, но не смог найти то что мне нужно. подскажите...

Присоединить к вводу с файла и выводу на него
Присоединить к вводу с файла и выводу на него function ok(y, z: byte): boolean; var x:...

Контрольная по вводу/выводу , оператор условного перехода
Помогите сложить блок-схему и написать программу к к двум заданиям 1)Операторы ввода/вывода...

Написать программу по выводу всех совершенных чисел до заданного
Нужно написать программу по выводу всех совершенных чисел до заданного n! Я новичок, поэтому не...

13
2 / 2 / 0
Регистрация: 20.05.2013
Сообщений: 8
20.05.2013, 12:15  [ТС] 2
вот методички по всем лабораторным, помогите пожалуйста
0
Вложения
Тип файла: pdf SP ipk - lab 1 - gcc, fork.pdf (670.5 Кб, 72 просмотров)
Тип файла: pdf SP ipk - lab 2 - input, output.pdf (520.6 Кб, 62 просмотров)
Тип файла: pdf SP ipk - lab 3 - pipe, fifo.pdf (592.4 Кб, 49 просмотров)
Тип файла: pdf SP ipk - lab 4 - shared files, memory, messages, signals.pdf (646.7 Кб, 53 просмотров)
Тип файла: pdf SP ipk - lab 5 - semaphores.pdf (522.3 Кб, 46 просмотров)
Тип файла: pdf SP ipk - lab 6 - filesystem.pdf (637.2 Кб, 44 просмотров)
93 / 94 / 13
Регистрация: 10.10.2008
Сообщений: 606
20.05.2013, 16:18 3
pavelbeast, хоть бы удосужился вариант написать. БрГТУ - рулит
1
2 / 2 / 0
Регистрация: 20.05.2013
Сообщений: 8
20.05.2013, 16:54  [ТС] 4
12 вариант. Ну да, БрГТУ..
0
93 / 94 / 13
Регистрация: 10.10.2008
Сообщений: 606
20.05.2013, 20:42 5
Старосте привет (Диме). Он тоже с лабами мучается
0
2 / 2 / 0
Регистрация: 20.05.2013
Сообщений: 8
21.05.2013, 00:01  [ТС] 6
так а что с лабами?)
0
93 / 94 / 13
Регистрация: 10.10.2008
Сообщений: 606
21.05.2013, 00:56 7
У самого сегодня сессия началась - так-что читай книги
0
2 / 2 / 0
Регистрация: 20.05.2013
Сообщений: 8
22.05.2013, 02:04  [ТС] 8
Может кому пригодится.
Лаба1. 12 вариант


Условие:
В столбце fork описано генеалогическое древо процессов: каждая цифра указывает на относительный номер (не путать с pid) процесса, являющегося родителем для данного процесса. Например, строка 0 1 1 1 3 означает, что первый процесс не имеет родителя среди ваших процессов (порождается и запускается извне), второй, третий и четвертый – порождены первым, пятый – третьим. В столбце exec указан номер процесса, выполняющего вызов exec, команды для которого указаны в последнем столбце. Запускайте команду обязательно с какими-либО параметрами.

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
// 0 1 1 2 4 4 5
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
 
void printPids(int vetv)
  printf ("%d  Pid:%d -> Pid: %d\n", vetv, getppid(), getpid() );
 
void main(void)
{
printPids(0);
pid_t pid=fork();
if(pid==0)
{
printPids(1);
pid=fork();
if(pid==0)
{
printPids(2);
pid=fork();
if(pid==0)
{
printPids(3);
pid=fork();
if(pid==0)
{
printPids(4);
}
return;
}
pid=fork();
if(pid==0)
{
printPids(5);
printf ("Process with parenpid: %d and pid: %d stop working\n",  getppid(), getpid() );
execl("/bin/ps", "ps", "a", (char*)0);
}
wait();
}
wait();
return;
}   
pid=fork();
if(pid==0)
{
printPids(6);
}     
wait();
return;
}
либо скачайте файл 1.с

Добавлено через 13 минут
Лаба3. Вариант 12

Условие:
1. Написать программу, которая порождает дочерний процесс, и общается с ним через программные каналы, передавая и получая информацию согласно варианту (см. табл.). Передачу и получение информации каждым из процессов сопровождать выводом на экран информации типа "процесс такой-то передал/получил такую-то информацию".
2. Разбить программу на отдельные генеалогически не связанные процессы, которые общаются через программные каналы.

Вариант: Родитель передает величины катетов прямоугольного треугольника, назад получает величины острых углов.

часть 1. -> файл 3.с
часть 2. -> файлы 3_1.с и 3_2.с (компилировать и запускать файлы в двух разных терминалах)
1
Вложения
Тип файла: rar 1.rar (404 байт, 116 просмотров)
Тип файла: rar 3.rar (1.5 Кб, 117 просмотров)
Тип файла: rar 3_1.rar (1.1 Кб, 122 просмотров)
Тип файла: rar 3_2.rar (951 байт, 114 просмотров)
2 / 2 / 0
Регистрация: 20.05.2013
Сообщений: 8
22.05.2013, 11:52  [ТС] 9
Лаба 4. Вариант 12


Условие:
Написать программу, которая порождает дочерний процесс, и общается с ним через средства взаимодействия согласно варианту (Разделяемая память), передавая и получая информацию согласно варианту (Родитель передает 5 случайных чисел, потомок возвращает их сумму и произведение). Передачу и получение информации каждым из процессов сопровождать выводом на экран информации типа "процесс такой-то передал/получил такую-то информацию". Дочерние процессы начинают операции после получения сигнала SIGUSR1 от родительского процесса.

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
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int fd, result;
size_t size;
float d = 10.0;
float e = 80.5;
float u1, u2;
    
void sign()
{
    fd = shm_open("myshmem.shm", O_CREAT | O_RDONLY, 0777);
    read(fd,&d,2);
    read(fd,&e,2);
    printf("Child получил:    d:%.1f  e:%.1f\n\n",d,e);  
    u1=atan(d/e)*180/M_PI;
        u2=90-u1;
    close(fd);
    fd = shm_open("myshmem.shm", O_CREAT | O_WRONLY | O_TRUNC, 0777);
    write(fd, &u1, 10);
    write(fd, &u2, 10);
    close(fd);
    printf("Child отправил:  u1 %.1f  u2 %.1f\n",u1,u2);
    
}
 
int main(){
umask(0);
pid_t pid;
 
    if((pid = fork()) > 0)
    {
        fd = shm_open("myshmem.shm", O_CREAT | O_WRONLY | O_TRUNC, 0777);
        write(fd, &d, 2);
    write(fd, &e, 2);
    printf("\nParent отправил:  d:%.1f  e:%.1f\n",d,e);
        kill(pid, SIGUSR1); 
        close(fd);
        wait();
 
        fd = shm_open("myshmem.shm", O_CREAT | O_RDONLY, 0777);
        read(fd,&u1,10);
        read(fd,&u2,10);
        close(fd);
        printf("Parent получил:  u1:%.1f  u2:%.1f\n\n",u1,u2);   
    }
else 
{
signal(SIGUSR1,sign);
sleep(2);
}
}
Компилировать так: gcc 4.c -lrt -lm
0
2 / 2 / 0
Регистрация: 20.05.2013
Сообщений: 8
24.05.2013, 23:50  [ТС] 10
Лаба 2. Вариант 12


Условие:
Часть 1.
Вариант 2, 12. Написать программу, которая получает со стандартного потока ввода права
доступа к файлам каталога, и выводит их в стандартный поток вывода, подменяя все группы
прав rwx словом ВСЕ. Протестировать на различных каталогах с использованием конвейеров в
различных комбинациях вашей программы и команд ls, sort, head, tail.
Часть 2.
Вариант 2, 12. В домашнем каталоге создайте четыре файла, в которые помещайте имена
файлов с правами доступа следующим образом: в первый, если права rwx установлены для
владельца; во второй, если для группы; в третий, если для остальных; в четвертый, если такой
группы прав не установлено ни для кого.

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
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
int main() 
{
    char k[255];
    int fd,i;
    FILE *f1,*f2,*f3,*f4;
    f1=fopen("f1","w");
    f2=fopen("f2","w"); 
    f3=fopen("f3","w");
    f4=fopen("f4","w");
    while (gets(k))
    {   
        for(i=0;i<strlen(k);i++)
            {if(k[i]=='r')
                if(k[i+1]=='w')
                    if(k[i+2]=='x')
                        {k[i]='W'; 
                         k[i+1]='S';
                         k[i+2]='E';
                        }
            }
        write(1,k,strlen(k));
        write(1,"\n",1);
        if(strstr(k+7, "rwx") != NULL)
            fprintf(f3,"%s\n",k+58);        
        if(strstr(k+3, "rwx") != NULL)  
            fprintf(f2,"%s\n",k+58);
        if(strstr(k+1, "rwx") != NULL)      
            fprintf(f1,"%s\n",k+58);
        if(strstr(k, "rwx") == NULL)
            fprintf(f4,"%s\n",k+58);
    }
}
запускать командами
ls -l | sort | head | ./a.out
ls -l | sort | tail | ./a.out

1
1 / 1 / 0
Регистрация: 02.04.2014
Сообщений: 3
02.04.2014, 22:45 11
народ может у кого решенный вариант 3 есть по этим лабам?
0
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 1
31.10.2017, 14:35 12
Может у кого есть решение на 5 вариант по этим лабам, скиньте на stapisergey@tut.by
буду должен.
0
0 / 0 / 0
Регистрация: 29.10.2019
Сообщений: 1
30.10.2019, 12:08 13
Коллеги, приветствую.
Будьте добры, поделитесь полным списком по 12 варианту. Если будет еще 4 - с меня пиво. Все же БрГТУ в Бресте находится))
0
Вованя
30.10.2019, 19:07     Написать программу по вводу-выводу
  #14

Не по теме:


Цитата Сообщение от pavelbeast Посмотреть сообщение
Через неделю экзамен, а я ничего не понимаю.
Глицинчику попей

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2019, 19:07

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Надо написать программу, по выводу ФАЛ по различным дням недели
У Меня есть переменная nowday, которая является днем недели ( 1,2,3...31). Требуется 1 числа...

Нужно создать программу по сохранению и вводу данных!
Я вот начал, но дальше не знаю как. import json filename = 'M_data.txt' myfile =...

Написать функцию по выводу символа из заданных символов
Написать функцию, которая выводит на экран &quot;W&quot; из заданных символов: * * * * * * * ...

Если введена не цифра, то написать, что нужно вводить только цифры и перейти снова к вводу
Доброго времени суток. Я новичок в этом деле. Как реализовать функцию: если введена не цифра, то...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.