Sto scrivendo una semplice shell come assegnazione del corso OS, ho bisogno di cercare nel PATH per trovare l'utente del programma digitato, una volta trovata la directory giusta, ho malloc un pezzo di memoria quel tanto che basta per contenere il nome della directory più il nome del programma, e lo passo come primo argomento per execv().Cosa succede alla memoria allocata dinamica quando si chiama execv()?
Avrei potuto assegnare staticamente 100 caratteri o giù di lì, ma avere un limite mi fa sentire a disagio. Quindi, quando execv() viene eseguito, l'heap viene ripulito o viene perso quel pezzo di memoria?
Forse non è un sacco di memoria, ma sono solo curioso.
Se è stato allocato staticamente un buffer per contenere il percorso, deve essere almeno la lunghezza massima che può essere un percorso assoluto di Linux. Una ricerca su google rivela che questo è "4096" (da/usr/src/linux-2.4.20-8/include/linux/limits.h', '#define PATH_MAX 4096/* # caratteri in un nome di percorso che include nul */'). Quindi dovresti includere 'limits.h' e rendere i caratteri del tuo' PATH_MAX' del buffer in lunghezza. – Praetorian