当前位置: 技术问答>solaris 10下的多线程和solaris 5.8下多线程编译有什么区别??
iis7站长之家
在solaris下如何获得应用程序路径?类似于windows下的GetModuleFileName函数的功能。
来源: 互联网 发布时间:2015-09-25
本文导语: 我找到一段代码,可以在linux下获取应用程序的路径,但是在solaris下是不行的。 请问一下,在solaris下如何获得应用程序的路径? linux下的代码如下: ------------------------------- #include #include main() { char ex...
我找到一段代码,可以在linux下获取应用程序的路径,但是在solaris下是不行的。
请问一下,在solaris下如何获得应用程序的路径?
linux下的代码如下:
-------------------------------
#include
#include
main()
{
char exePath[NAME_MAX+1];
char fullPath[NAME_MAX+1];
sprintf(exePath,"/proc/%d/exe",getpid());
readlink(exePath,fullPath,NAME_MAX);
printf("%sn",fullPath);
getchar();
}
-------------------------------
请问一下,在solaris下如何获得应用程序的路径?
linux下的代码如下:
-------------------------------
#include
#include
main()
{
char exePath[NAME_MAX+1];
char fullPath[NAME_MAX+1];
sprintf(exePath,"/proc/%d/exe",getpid());
readlink(exePath,fullPath,NAME_MAX);
printf("%sn",fullPath);
getchar();
}
-------------------------------
|
solaris没用过下面是linux下函数你看一下solaris上有没有
NAME
getcwd, get_current_dir_name, getwd - Get current working directory
SYNOPSIS
#include
char *getcwd(char *buf, size_t size);
char *get_current_dir_name(void);
char *getwd(char *buf);
NAME
getcwd, get_current_dir_name, getwd - Get current working directory
SYNOPSIS
#include
char *getcwd(char *buf, size_t size);
char *get_current_dir_name(void);
char *getwd(char *buf);
|
FYI
下面是在unix里面获取应用程序的路径
如果argv[0] 是以 "/" 开始的字,它可能就是你的执行程序所在的绝对路径。如果不是那就得照顺序检查PATH里的每一个目录看看里面是否有与argv[0]一样的程序。如果找得到的话将那个目录与程序名称拼起来可能就是你要的pathname了。
不过上述方法找到的并不一定是正确的,因为在程式中用到exec()时,argv[0]是可以随便给的。将argv[0]设为与要执行的程式名称相同只是一种惯用法罢了!
以下的例子可能会使你更清楚些:
#include
main()
{
execl("/tmp", "vi test.cc", (char *)NULL);
}
这个被执行的程序就会认为它的名字(argv[0]之值)是 "vi test.cc").
下面是在unix里面获取应用程序的路径
如果argv[0] 是以 "/" 开始的字,它可能就是你的执行程序所在的绝对路径。如果不是那就得照顺序检查PATH里的每一个目录看看里面是否有与argv[0]一样的程序。如果找得到的话将那个目录与程序名称拼起来可能就是你要的pathname了。
不过上述方法找到的并不一定是正确的,因为在程式中用到exec()时,argv[0]是可以随便给的。将argv[0]设为与要执行的程式名称相同只是一种惯用法罢了!
以下的例子可能会使你更清楚些:
#include
main()
{
execl("/tmp", "vi test.cc", (char *)NULL);
}
这个被执行的程序就会认为它的名字(argv[0]之值)是 "vi test.cc").