История изменений
Исправление vodz, (текущая версия) :
Может подскажете, что нужно изменить для «корректной» работы?
1. Если вы расширяете использованную память, то её надо вначале динамически получить. То есть узнать, сколько было в предыдущим PATH с учётом нулевого символа и запросить на 2 байта больше. И только после этого копировать и добавлять. Неплохо было б и проверить, что точка уже есть в PATH.
2. execl/execle всё равно не использует PATH, потому первый аргумент должен содержать путь к файлу, так что если файл действительно в текущем каталоге, то изменение PATH с добавлением точки повлияет только для вызова других программ из текущего каталога, которые вызывают через execlp-подобных вызовов.
3. pid_t waitpid(); - это уберите, тянут это с исходников 40-летней давности, когда подключение лишнего include приводило к тормозам, а то и не было такого <sys/wait.h>
Исправление vodz, :
Может подскажете, что нужно изменить для «корректной» работы?
1. Если вы расширяете использованную память, то её надо вначале динамически получить. То есть узнать, сколько было в предыдущим PATH с учётом нулевого символа и запросить на 2 байта больше. И только после этого копировать и добавлять. Неплохо было б и проверить, что точка уже есть в PATH.
2. execl/execle всё равно не использует PATH, потому первый аргумент должен содержать путь к файлу, так что если файл действительно в текущем каталоге, то изменение PATH с добавлением точки повлияет только для вызова других программ из текущего каталога, которые вызывают через execlp-подобных сисколов.
3. pid_t waitpid(); - это уберите, тянут это с исходников 40-летней давности, когда подключение лишнего include приводило к тормозам, а то и не было такого <sys/wait.h>
Исправление vodz, :
Может подскажете, что нужно изменить для «корректной» работы?
1. Если вы расширяете использованную память, то её надо вначале динамически получить. То есть узнать, сколько было в предыдущим PATH с учётом нулевого символа и запросить на 2 байта больше. И только после этого копировать и добавлять. Неплохо было б и проверить, что точка уже есть в PATH.
2. execl/execle всё равно не использует PATH, потому первый аргумент должен содержать путь к файлу, так что если файл действительно в текущем каталоге, то изменение PATH с добавлением точки повлияет только для вызова других программ из текущего каталога, которые вызывают через execlp-подобных сисколов.
Исправление vodz, :
Может подскажете, что нужно изменить для «корректной» работы?
1. Если вы расширяете использованную память, то её надо вначале динамически получить. То есть узнать, сколько было в предыдущим PATH с учётом нулевого символа и запросить на 2 байта больше. И только после этого копировать и добавлять. Неплохо было б и проверить, что точка уже есть в PATH.
2. execl/execle всё равно не использует PATH, потому первый аргумент должен содержать путь к файлу, так что если файл действительно в текущем каталоге, то изменение PATH с добавлением точки повлияет только для вызова других программ из текущего каталога, которые вызывают через execlp-подобных сисколов.
Исходная версия vodz, :
Может подскажете, что нужно изменить для «корректной» работы?
1. Если вы расширяете использованную память, то её надо вначале динамически получить. То есть узнать сколько было в предыдущим PATH с учётом нулевого символа, и запросить на 2 байта больше. И только после этого копировать и добавлять. Неплохо было б и проверить, что точка уже есть в PATH.
2. execl/execle всё равно не использует PATH, потому первый аргумент должен содержать путь к файлу, так что если файл действительно в текущем каталоге, то изменение PATH с добавлением точки повлияет только для вызова других программ из текущего каталога, которые вызывают через execlp-like сисколов.