Size: a a a

2021 July 01

F

Fljúgandi Kettlingur... in pro.bash
сначала мы форкаемся, потом тот процесс, который получил от форка 0, понимает что он тут дитя и делает exec* будущего процесса.
источник

F

Fljúgandi Kettlingur... in pro.bash
а родитель получает от форка пид ребенка и радуется
источник

F

Fljúgandi Kettlingur... in pro.bash
я КО, да?
источник

∀lǝxǝʎ in pro.bash
сам по себе fork ни какие fd не меняет
источник

F

Fljúgandi Kettlingur... in pro.bash
да, разумеется. Поэтому ребенок должен избавиться от родительского 0 и 2, назначить себе бывший 1 на 0 (если только мы сделали перенаправление, вроде &>1), открыть новые 1 и 2. Так?
источник

∀lǝxǝʎ in pro.bash
Я могу только высказать предположение, за точностями надо в код залезть.
в случае pipe? Да, ребёнок пропишет себе свой текущий 1 в 0, а 1 переправит в /dev/stdout, а родитель наверняка перед форком создал fifo и назначил его в 1.
источник

F

Fljúgandi Kettlingur... in pro.bash
@Laziness_Itself а еще наша лекция будет неполной, если не сказать, что в ядре никаких вызовов "запусти мне вон ту программу" нет. Есть группа exec* (всякие execve например, go figure), которые заменяют выполняющуюся программу на нужную тебе. Поэтому, чтобы запустить внутри баша греп, ты
1. форкаешься
2. У тебя есть два баша на одном и том же месте выполнения программы, сразу после форка. Чтобы понять, ты родитель или дитя, ты смотришь возврат форка. Родитель получит пид ребенка, ребенок - 0 (ЕМНИП).
3. Процесс-ребенок выполнит ^^^ вуду с fd, потом сделает exec и превратится в ту программу, которую ты хочешь запустить. Например, в греп.
источник

∀lǝxǝʎ in pro.bash
без pipe, просто вызов grep не будет вообще ни чего делать с fd
источник

Лс

Лень с Самосознанием... in pro.bash
Жуть
источник

F

Fljúgandi Kettlingur... in pro.bash
а ты думал, просто в стиле питончика system("/bin/grep") и дело в шляпе? А вот хренушки...
источник

Лс

Лень с Самосознанием... in pro.bash
Я вообще не думал😅
источник

∀lǝxǝʎ in pro.bash
источник

∀lǝxǝʎ in pro.bash
Так тут тоже ж самое происходит
источник

∀lǝxǝʎ in pro.bash
Или хуже? Там ещё sh создаётся сначала
источник

F

Fljúgandi Kettlingur... in pro.bash
под капотом - да. Но с точки зрения пайтон-программиста никаких форков нет.
источник

EK

Evgeny Kuchkov in pro.bash
Ну вы развели тут лекторий
источник

EK

Evgeny Kuchkov in pro.bash
А мне так и не ответили пару дней назад как переменные прокидывать в родительский шелл
источник

A

A1EF in pro.bash
Я пропустил - разве это возможно? О_о
источник

Лс

Лень с Самосознанием... in pro.bash
Нет)
источник

F

Fljúgandi Kettlingur... in pro.bash
Никак.
источник