[Я не читал про APUE, но то, что вы цитируете, выглядит не очень]
if my program uses a system call, it would be interrupted/stopped, if at any time the program catches a signal.
Не любой системный вызов. Только некоторые системные вызовы могут быть прерваны.
(Does default handler also count as a catch?)
№
For example, if I have a read system call, which reads 10GB data, when it's reading, I send any one of signals(e.g.kill -SIGUSR1 pid), then read would fail and return.
Прочитанные вами 10 ГБ ()вернутся с EINTR только в том случае, если они были прерваны до того, как вы смогли прочитать хотя бы один байт ; в противном случае он вернет объем данных, который уже был прочитан (short read = success, errno не имеет значения ).
[это не было объяснено в связанном обмане]
So if I my understanding are all correct, what/why should I care about interrupted system call now..? It seems the system/OS handles it automatically.
Потому что вы можете захотеть что-то сделать после получения сигнала, а обработчик сигнала мало что может сделать; ни о чем, использующем malloc ()или stdio (, даже о printf ())не может быть и речи. Таким образом, вы должны обрабатывать прерывания в основном цикле программы, и чтобы иметь возможность сделать это, вы должны как-то выйти из блокирующего чтения ()(, чтение ()может блокироваться даже после возврата опроса (). fd как готовый к чтению ).
[это было также объяснено в связанном обмане]
Похоже, вы пытаетесь решить проблему, которой у вас нет или вы не совсем понимаете. Требование выравнивания разделов относится только к началу раздела.
Вот моя идеально выровненная таблица разделов:
Disk /dev/sda: <skipped>
Disk model: <skipped>
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: <skipped>
Device Start End Sectors Size Type
/dev/sda1 2048 206847 204800 100M EFI System
/dev/sda2 206848 468991 262144 128M Linux filesystem
/dev/sda3 468992 67577855 67108864 32G Linux filesystem
...
Обратите внимание на то, что все конечные сектора "не выровнены".