Как Вы делаете межпроцессную привязку Linux (C/C++)?

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

Необходимо быть очень осторожными, так как очень просто скопировать чистый диск сверху хорошего диска!

Для окончания с загрузочными секторами и всеми Вы сделали бы что-то как:

dd if=/dev/hdx of=/dev/hdy

Где hdx Ваш 40G диск и hdy Ваш 160G диск. Вы заметите, что нет никаких чисел раздела как /dev/hdx1. Это копирует весь диск, информацию о разделе и так далее.

Ваш новый диск будет точно так же, как старый диск, 40G выделенный. Это должно загрузить право, когда помещено назад в Вашем ноутбуке. Надеетесь, что Вы использовали LVM? Иначе надежда Вы не использовали все разделы? Заканчивание этой точки требует намного большего количества информации.

Другое решение состоит в том, чтобы вывести каждый отдельный раздел. Это требует намного большей осведомленности ситуации, так как необходимо будет воссоздать информацию о загрузке.

Все это лучше всего используется для клонирования компьютеров, не обновляя жесткие диски. Намного лучше восстановить к новой установке с помощью резервных копий.

8
16.09.2011, 02:54
2 ответа

Если Вы только хотите один экземпляр своего приложения, выполняющего Вас, может использовать файл блокировки. Откройте его с O_CREAT|O_EXCL флаги и это перестанут работать, если файл уже будет существовать.

Если Вы хотите синхронизировать доступ к использованию файла flock. Также возможно заблокировать части файлов с fcntl. Скопление только для консультативной блокировки, означающей, что программа может проигнорировать блокировки и получить доступ к нему так или иначе. Обязательная блокировка возможна с fcntl но это требует специальной опции монтирования и специальных полномочий файла.

semget и semop может использоваться для межпроцессной синхронизации также.

8
27.01.2020, 20:12

Межпроцессные мьютексы являются необязательной частью POSIX (см. _POSIX_THREAD_PROCESS_SHARED на странице unistd.h ), и поскольку они реализованы в Linux, вы также можете их использовать - см. Примеры .

0
27.01.2020, 20:12

Теги

Похожие вопросы