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

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post 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());
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7459
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

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

Post by ONEEYEMAN »

Dobrogo vremeni sutok,
Drajver - kod otkrytyj?

Spasibo.
alys666
Super wx Problem Solver
Super wx Problem Solver
Posts: 329
Joined: Tue Oct 18, 2016 2:31 pm

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

Post by alys666 »

ну если текущая папка из потока правильная, то значит дело не в папке.
текущая дира это атрибут процесса, то есть запущенного приложения, и поток как часть приложения, будет ее иметь такой же как и само приложение.
ubuntu 20.04, wxWidgets 3.2.1
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post by cutecode »

Походу этот драйвер проверяет откуда прога запущена, вместо проверки текущей папки программы.

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

https://www.acs.com.hk/en/driver/200/ac ... rd-reader/
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
alys666
Super wx Problem Solver
Super wx Problem Solver
Posts: 329
Joined: Tue Oct 18, 2016 2:31 pm

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

Post by alys666 »

а ты программно драйвер пускаешь, через wxExec какой-нибудь?
тогда можно также программно менять текущую диру через
wxSetWorkingDirectory.
меняешь рабочую диру и пускаешь внешнее приложение. тогда оно запустится с этой новой рабочей.
типа

Code: Select all

	auto lold= wxGetCwd();
	if( wxSetWorkingDirectory("folder\needed")){
		wxExecute("some_path");
		wxSetWorkingDirectory(lold);
	}
ubuntu 20.04, wxWidgets 3.2.1
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post by cutecode »

нет,
прога линкуется динамически к драйверу
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7459
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

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

Post by ONEEYEMAN »

Privet,
Togda takoj vopros - drajver tvoj? Esli net - ishodniki est?

Spasibo.
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post 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 &
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
Post Reply