KDE下C程序的工作路径问题

C、C++和Java语言
回复
头像
farta
帖子: 443
注册时间: 2009-02-24 2:48
送出感谢: 0
接收感谢: 0

KDE下C程序的工作路径问题

#1

帖子 farta » 2010-05-29 19:52

在使用C语言编写一个GUI程序。发现在KDE环境下运行时,工作路径有问题。在文件管理器里点击可执行文件,以及使用“运行命令“的方式运行可执行文件时,程序不能访问所在目录下的文件,使用getcwd函数返回乱码“/home/farta/[乱码]”。但是打开Konsole,然后在控制台下输入命令启动时此问题消失。不知各位知道不知道此问题的来源以及解决办法?
头像
farta
帖子: 443
注册时间: 2009-02-24 2:48
送出感谢: 0
接收感谢: 0

Re: KDE下C程序的工作路径问题

#2

帖子 farta » 2010-05-29 20:49

自己解决了路径问题,但是并没有完全解决。

我估计,问题的根源在于KDE启动一个程序的时候,自己给定了程序的工作路径。/proc/self/cwd也好,getcwd的返回值也好,返回的都是工作路径的值,而非可执行文件所在路径的值。

想获得可执行文件所在的绝对路径,想来想去,只能使用argv[0]了。虽然需要手工处理一番但是大致上还是能正常运行了。获取之后重新设定工作路径即可。

依然存在的问题主要有两个

1.乱码从哪里来?我估计有可能是KDE默认将工作路径指向了~/文档。如果是的话,为什么成了乱码?

2.有没有更简单的获得可执行文件的绝对路径的办法?

如有明白人物,欢迎指教。
回复

回到 “C/C++/Java”