Системное программирование на C++: процессы, C-API и WinAPI
This is the second article in a C++ series; the first covered beginner basics such as variables, loops, classes, and containers. This installment moves to a lower level and looks at how an ordinary C++ program communicates with the operating system. The author explains the motivation: a college lab required starting a process, waiting for it, and retrieving its return code, and the author struggled with it for a week.
Привет, Хабр! Это вторая статья цикла про C++. В первой я разбирал базу для тех, кто начинает с нуля: переменные, циклы, классы, контейнеры. Здесь идём на уровень ниже — как обычная C+±программа договаривается с операционной системой. Сразу скажу, зачем я вообще полез в эту тему. В колледже была лаба, где нужно было поднять процесс, дождаться его и снять код возврата. Я неделю не понимал, почему fork() в одном случае возвращает ноль, а в другом — PID, и почему после exec ребёнок «исчезает». Препод объяснил это минут за десять — и я понял, что половину объяснений всё равно не понял. С тех пор я пишу такие вещи с расстановкой: не « fork() создаёт процесс», а что именно он возвращает, что происходит в коде после вызова и что будет, если забыть закрыть дескрипторы. Поэтому статей будет много, а примеров в каждой — ещё больше. Что дальше в цикле, чтобы было понятно, куда мы движемся: Читать далее