Ваша первая задача состояла бы в том, чтобы подключить оба диска к существующей системе Linux или подключить новый диск к исходной системе.
Необходимо быть очень осторожными, так как очень просто скопировать чистый диск сверху хорошего диска!
Для окончания с загрузочными секторами и всеми Вы сделали бы что-то как:
dd if=/dev/hdx of=/dev/hdy
Где hdx
Ваш 40G диск и hdy
Ваш 160G диск. Вы заметите, что нет никаких чисел раздела как /dev/hdx1
. Это копирует весь диск, информацию о разделе и так далее.
Ваш новый диск будет точно так же, как старый диск, 40G выделенный. Это должно загрузить право, когда помещено назад в Вашем ноутбуке. Надеетесь, что Вы использовали LVM? Иначе надежда Вы не использовали все разделы? Заканчивание этой точки требует намного большего количества информации.
Другое решение состоит в том, чтобы вывести каждый отдельный раздел. Это требует намного большей осведомленности ситуации, так как необходимо будет воссоздать информацию о загрузке.
Все это лучше всего используется для клонирования компьютеров, не обновляя жесткие диски. Намного лучше восстановить к новой установке с помощью резервных копий.
Если Вы только хотите один экземпляр своего приложения, выполняющего Вас, может использовать файл блокировки. Откройте его с O_CREAT|O_EXCL
флаги и это перестанут работать, если файл уже будет существовать.
Если Вы хотите синхронизировать доступ к использованию файла flock
. Также возможно заблокировать части файлов с fcntl
. Скопление только для консультативной блокировки, означающей, что программа может проигнорировать блокировки и получить доступ к нему так или иначе. Обязательная блокировка возможна с fcntl
но это требует специальной опции монтирования и специальных полномочий файла.
semget
и semop
может использоваться для межпроцессной синхронизации также.
Межпроцессные мьютексы являются необязательной частью POSIX (см. _POSIX_THREAD_PROCESS_SHARED на странице unistd.h ), и поскольку они реализованы в Linux, вы также можете их использовать - см. Примеры .