Я думаю, что эта часть справочной страницы clone(2)
может прояснить разницу. PID:
CLONE_THREAD (начиная с Linux 2.4.0-test8)
Если CLONE_THREAD установлен, дочерний элемент помещается в тот же поток group в качестве вызывающего процесса.
Группы потоков были добавлены в Linux 2.4 для поддержки Потоки POSIX — это набор потоков, которые совместно используют один ПИД. Внутренне этот общий PID является так называемым потоком. идентификатор группы (TGID) для группы потоков. Начиная с Linux 2.4 вызовы getpid(2) возвращают TGID вызывающей стороны.
Фраза «потоки реализованы как процессы» относится к проблеме, связанной с тем, что в прошлом у потоков были отдельные идентификаторы PID. По сути, в Linux изначально не было потоков внутри процесса, а были только отдельные процессы (с отдельными PID), которые могли иметь некоторые общие ресурсы, такие как виртуальная память или файловые дескрипторы. CLONE_THREAD
и разделение идентификатора процесса(*) и идентификатора потока делают поведение Linux более похожим на другие системы и больше на требования POSIX в этом смысле. Хотя технически ОС по-прежнему не имеет отдельных реализаций для потоков и процессов.
Обработка сигналов была еще одной проблемной областью в старой реализации, это описано более подробно в статье. @FooF ссылается на в своем ответе.
Как отмечено в комментариях, Linux 2.4 также был выпущен в 2001 году, в том же году, что и книга, так что неудивительно, что новости не попали в эту печать.
«Нет свободного места на устройстве» означает, что диск заполнен. Вам нужно освободить место на диске (, разделе ), содержащем /tmp
, или, точнее, в файловой системе, содержащей /tmp
.
Это не имеет ничего общего с содержимым программы (, если только вам не удалось написать программу, которая компилируется в много -гигабайтный двоичный файл ).
Проверить, где находится /tmp
и сколько свободного места:
df /tmp
Если /tmp
является собственной файловой системой (, в столбце «Смонтировано» )указано /tmp
, тогда проверьте, где используется пространство:
du /tmp | sort -n
Посмотрите на каталоги в конце списка. Чтобы увидеть самые большие файлы в каталоге, запустите, например.
ls -lrS /tmp
Если /tmp
находится в корневой файловой системе (, в столбце «Mounted on» в выводеdf /tmp
)указано /
, тогда вам нужно освободить место на диске. См. Как понять, что занимает место на диске?