LINUX.ORG.RU

Сообщения Roman456

 

ПОМОГИТЕ СРОЧНО! ПРОБЛЕМА С ЗАГРУЗКОЙ!

Хотел организовать общие папки в ubuntu 18.04 и windows 10 через virualbox. После перезагрузки виртуалки у меня бесконечная загрузка. До этого ubuntu работала правильно и все было отлично. Единственное, что я вводил в терминале это: sudo adduser roman vboxsf. Теперь не может загрузиться ubuntu. Картинка: https://disk.yandex.ru/client/disk . Я так понимаю он не может загрузить моего пользователя. Помогите, пожалуйста, решить проблему. Нужно очень срочно в ближайшие сроки

 

Roman456
()

Копирование файла в Linux через процедуру

Мне нужно написать программу, которая копирует содержимое одного файла в другой. При этом надо написать программу и запустить ее через gcc компилятор. И еще надо использовать сист. вызовы creat(),open(),read(),write() и close(). Мои мысли: сначала открыть файл в программе, который мы компилируем и как-то сохраняем в массив char его содержимое. Затем открываем другой файл, только уже на запись. В этот файл с помощью write() записываем этот массив char. Но вот как прочитать содержимое исходного файла в какую-то переменную? Можно ли как-то? Я пробовал через execle делать, но это сист. вызов просто распечатывает содержимое моего файла и возвращает целое число. Execle(«/bin/cat»,«/bin/cat»,«1.c»,NULL,envp). Но это просто печатает содержимое файла. А мне надо как-то это сохранить и записать в другой файл. Подскажите как можно реализовать. Может быть я вообще не то делаю.

 , ,

Roman456
()

pipe()+exec()

Помогите, пожалуйста, разобраться. Есть программа, где используются вызовы fork() и pipe(). В процессе-родителе записывается информация в дескриптор fd[1], а в процессе-ребенке читается дескриптор fd[0] и выводятся эти данные на экран. Все это написано в одном файле. А у меня задача, чтобы в процессе-ребенке вызвался вызов exec() и оттуда как-то прочиталась информация, которую мы записали в процессе-родителе в дескрипторе fd[1]. Проблема в том, что в exec() мы же передаем файл, а в этом файле я не могу получить доступ к тем дескрипторам, которые были созданы в первоначальном файле. Помогите, разобраться с этим заданием. Много времени уже не могу разобраться. Вот собственно код, который нужно поменять:

#include <sys/types.h> #include <unistd.h> #include <stdio.h>

int main(){

int fd[2], result;

size_t size;

char resstring[14];

if(pipe(fd) < 0){

printf(«Can\'t create pipe\n»);

exit(-1);

}

result = fork();

if(result <0){ //ошибка создания

printf(«Can\'t fork child\n»);

exit(-1);

} else

if (result > 0) { //родительский процесс

close(fd[0]);

size = write(fd[1], «Hello, world!», 14)

if(size != 14){

printf(«Can\'t write all string\n»);

exit(-1);

}

close(fd[1]);

printf(«Parent exit\n»);

} else { //процесс ребенок close(fd[1]);

size = read(fd[0], resstring, 14);

if(size < 0){

printf(«Can\'t read string\n»);

exit(-1);

} printf(«%s\n»,resstring);

close(fd[0]);

}

return 0;

}

А вот задание: Модифицировать программу так, чтобы канал использовался для связи двух родственных процессов, исполняющих разные программы. Обратить внимание, на то, что процесс ребенок должен читать информацию из канала после замены его пользовательского контекста.

 , , , ,

Roman456
()

RSS подписка на новые темы