Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

1) написать программу на СИ, реализующую командную строку name1| name2. Программа вызывается командной строкой: program name1 name2. Предусмотреть обработку ошибок (отсутствие файлов, неправильное



Комиссия 1

1) Написать программу на СИ, реализующую командную строку NAME1| NAME2. Программа вызывается командной строкой: PROGRAM NAME1 NAME2. Предусмотреть обработку ошибок (отсутствие файлов, неправильное количество параметров).

2) Написать программу на СИ, обрабатывающую каждое четное возникновение сигнала SIGTRAP формированием двух сыновних процессов, связанных каналом.

 

Комиссия 2 (примерно)

1) Инвертирование файла.

2) Процесс внук имеет доступ к единственному файлу NAME2, в процессе

правнук создать инвертируемую копию файла NAME2 в файле NAME3.

Обмен информации происходит через канал.

 

Комиссия 3

Тоже самое что и комиссия 1.

 

Комиссия 4

1) Написать программу, определяющую количество литер, слов и строк в тексте,

состоящем из нечетных N-ok байт заданного файла. Для подсчета количества

литер, слов и строк использовать команды SHELL – wc. Результаты

поместить в файл. Имена файлов и величина N задаются в командной строке.

2) Написать программу, выдающую на экран содержимое файла порциями по N

строк; каждая последующая порция выдается после нажатия клавиш “CTRL +

C”. Имя файла и величина N задаются в командной строке.

 

Комиссия 5

Тоже самое что и комиссия 3.

к 1 н1

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

struct stat buffer1, buffer2;

int main(int argc, char **argv){

int fd[2];

if (argc == 3){

if ((lstat (argv[1], &buffer1)!= -1) || (lstat (argv[2], &buffer2)!= -1)){

pipe(fd);

if (fork()){

dup2(fd[1], 1);

close(fd[1]);

close(fd[0]);

execlp(argv[1], argv[1], NULL);

}

dup2(fd[0], 0);

close(fd[0]);

close(fd[1]);

execlp(argv[2], argv[2], NULL);

}

else

printf("faila net\n");

}

else

printf("nevernoe kolichestvo argumentov\n");

return 0;

}

 

 

к1 н2

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int fl = 0;

void SigHndlr(int s){

signal(SIGINT, SigHndlr);

int fd[2], fd2[2];

++fl;

if (!(fl % 2)){

printf("chet\n");

pipe (fd);

if (!fork()) {

dup2(fd[1], 1);

close(fd[0]);

close(fd[1]);

system("ls");

exit(0);

}

 

if (!fork()) {

dup2(fd[0], 0);

close(fd[0]);

close(fd[1]);

system("wc");

exit(0);

}

 

close(fd[0]);

close(fd[1]);

}

}

int main(int argc, char **argv)

{

system("ls");

signal(SIGINT, SigHndlr);

while(1) sleep(1);

return 0;

}

 

к2 н1

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

 

FILE *f1;

FILE *f2;

 

 

void rec()

{

if (!feof(f1)) {

char c;

c = fgetc(f1);

rec();

fputc(c, f2);

}

}

 

int main(int argc, char **argv)

{

f1 = fopen(argv[1], "r");



f2 = fopen(argv[2], "w");

rec();

return 0;

}

 

 

к2 н2

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

 

int f1, f2;

int buf[256], sim[256];

 

void rec()

{

int c;

if ((c = fgetc(stdin))!= EOF) {

rec();

fputc(c, stdout);

}

}

void out()

{

int c;

while ((c = fgetc(stdin))!= EOF) {

fputc(c, stdout);

}

}

int main(int argc, char **argv){

int fd[2];

pipe (fd);

if (!fork()){ // сын

if (!fork()){ // внук

if (!fork()) { //правнук

dup2(fd[0], 0);

close(fd[0]);

close(fd[1]);

f2 = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC);

dup2(f2, 1);

close(f2);

out();

return 0;

}

dup2(fd[1], 1);

close(fd[0]);

close(fd[1]);

f1 = open(argv[1], O_RDONLY);

dup2(f1, 0);

close(f1);

rec();

return 0;

}

close(fd[0]);

close(fd[1]);

return 0;

}

close(fd[0]);

close(fd[1]);

return 0;

 

 

к4 н1

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int f1, f2;

int per;

int send(int N){

int c;

int fl = 0;

int count = 0;

while ((c = fgetc(stdin))!= EOF) {

if((count < N) && (!(fl % 2)))

fputc(c, stdout);

count ++;

if (count == N) {

fl = fl + 1;

count = 0;

}

}

return 0;

}

int main(int argc,char **argv){

int t;

int fd[2];

pipe(fd);

if (!fork()){

dup2(fd[0], 0);

close(fd[0]);

close(fd[1]);

f2 = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC);

dup2(f2, 1);

close(f2);

execlp("wc", "wc", NULL);

return -1;

}

f1 = open(argv[1], O_RDONLY);

dup2(f1, 0);

close(f1);

 

dup2(fd[1], 1);

close(fd[0]);

close(fd[1]);

 

per = argv[3][0] - '0';

send(per);

return 0;

}

к4 н2

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int N;

void SigHndlr(int s){

int c;

int count = 0;

while(count < N){

c = fgetc(stdin);

if (c == EOF)

exit(0);

fputc(c, stdout);

if (c == '\n')

count ++;

}

}

 

int main(int argc, char **argv){

int f1 = open(argv[1], O_RDONLY);

dup2(f1,0);

close(f1);

N = (argv[2][0] - '0');

 

signal(SIGINT, SigHndlr);

while(1);

return 0;

}

 

 


Дата добавления: 2015-11-04; просмотров: 30 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Уважаемые коллеги, приглашаем Вас к сотрудничеству! | Каждое предприятие в своей деятельности использует автотранспортные средства. Служебный автотранспорт подразделяется на собственный и арендованный. Служебный автотранспорт чаще всего приобретается в

mybiblioteka.su - 2015-2024 год. (0.022 сек.)