LINUX.ORG.RU

История изменений

Исправление 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 сисколов.