Page 1 of 1

wxThread и её текущая директория

Posted: Thu Feb 13, 2020 11:23 pm
by cutecode
у меня в коде есть код который устанавливает текущую папку,
но походу он работает только для основного процесса, но поток его игнорирует

Имеем драйвер для работы с карт-ридером.
И этот драйвер требует чтобы в текущей директории был файл настроек ctacs.ini
С windows проблем нет, все работает. Но с линуксом странные проблемы.
Если я запускаю программу так

Code: Select all

 /usr/bin/dental-soft/soft_itU64
то драйвер не работает

если я насильно сменю директрию, то драйвер работает

Code: Select all

cd /usr/bin/dental-soft
./soft_itU64
Для работы с драйвером использую отдельный поток
Если я вместо Run(), запускаю Entry(), то драйвер снова работает

Code: Select all

	//m_pMyThreadCard->Run();
	m_pMyThreadCard->Entry();
если дебагить текущую директорию из самого потока, то текущую папку сообщает правильную, но драйвер не работает

Code: Select all

write_message(wxFileName::GetCwd());

Re: wxThread и её текущая директория

Posted: Fri Feb 14, 2020 6:16 pm
by ONEEYEMAN
Dobrogo vremeni sutok,
Drajver - kod otkrytyj?

Spasibo.

Re: wxThread и её текущая директория

Posted: Fri Feb 21, 2020 1:08 pm
by alys666
ну если текущая папка из потока правильная, то значит дело не в папке.
текущая дира это атрибут процесса, то есть запущенного приложения, и поток как часть приложения, будет ее иметь такой же как и само приложение.

Re: wxThread и её текущая директория

Posted: Fri Feb 21, 2020 1:49 pm
by cutecode
Походу этот драйвер проверяет откуда прога запущена, вместо проверки текущей папки программы.

Я сделал shell скрипт, который сначала меняет папку на папку с программой, и затем запускает саму программу в этой папке.
Драйвер только так работает

https://www.acs.com.hk/en/driver/200/ac ... rd-reader/

Re: wxThread и её текущая директория

Posted: Fri Feb 21, 2020 5:11 pm
by alys666
а ты программно драйвер пускаешь, через wxExec какой-нибудь?
тогда можно также программно менять текущую диру через
wxSetWorkingDirectory.
меняешь рабочую диру и пускаешь внешнее приложение. тогда оно запустится с этой новой рабочей.
типа

Code: Select all

	auto lold= wxGetCwd();
	if( wxSetWorkingDirectory("folder\needed")){
		wxExecute("some_path");
		wxSetWorkingDirectory(lold);
	}

Re: wxThread и её текущая директория

Posted: Fri Feb 21, 2020 5:46 pm
by cutecode
нет,
прога линкуется динамически к драйверу

Re: wxThread и её текущая директория

Posted: Fri Feb 21, 2020 6:15 pm
by ONEEYEMAN
Privet,
Togda takoj vopros - drajver tvoj? Esli net - ishodniki est?

Spasibo.

Re: wxThread и её текущая директория

Posted: Fri Feb 21, 2020 9:05 pm
by cutecode
Драйвер Китайский,
https://www.acs.com.hk/en/driver/200/ac ... rd-reader/

и копаться в его исходниках мне не хочется.
Как я уже писал выше, я написал скрипт, с которым проблема уже решена

Спасибо

Code: Select all

[Desktop Entry]
Exec=/usr/bin/dental-soft/dental-soft.sh
dental-soft.sh

Code: Select all

#!/bin/bash

cd /usr/bin/dental-soft
./soft_itU64 &