5.1. We Say Multicore, We Mean Multiprocessor5.2. What Is a Process?5.3. Why Processes and Not Threads?5.4. Using posix_spawn()5.4.1. The file_actions Parameter5.4.2. The attrp Parameter5.4.3. A Simple posix_spawn() Example5.4.4. The guess_it Program Using posix_spawn5.5. Who Is the Parent? Who Is the Child?5.6. Processes: A Closer Look5.6.1. Process Control Block5.6.2. Anatomy of a Process5.6.3. Process States5.6.4. How Are Processes Scheduled?5.7. Monitoring Processes with the ps Utility5.8. Setting and Getting Process Priorities5.9. What Is a Context Switch?5.10. The Activities in Process Creation5.10.1. Using the fork() Function Call5.10.2. Using the exec() Family of System Calls5.10.2.1. The execl() Functions5.10.2.2. The execv() Functions5.10.2.3. Determining the Restrictions of exec() Functions5.11. Working with Process Environment Variables5.12. Using system() to Spawn Processes5.13. Killing a Process5.13.1. The exit(), and abort() Calls5.13.2. The kill() Function5.14. Process Resources5.14.1. Types of Resources5.14.2. POSIX Functions to Set Resource Limits5.15. What Are Asynchronous and Synchronous Processes5.15.1. Synchronous vs. Asynchronous Processes for fork(), posix_spawn(), system(), and exec()5.16. The wait() Function Call5.17. Predicates, Processes, and Interface Classes5.17.1. Program Profile 5-15.17.1.1. Program Name:5.17.1.2. Description:5.17.1.3. Libraries Required:5.17.1.4. Additional Source Files Needed:5.17.1.5. User-Defined Headers Required:5.17.1.6. Compile and Link Instructions:5.17.1.7. Test Environment:5.17.1.8. Processors:5.17.1.9. Notes:5.18. Summary