当前位置: 技术问答>linux和unix
大家帮帮我吧,怎么知道当前运行的程序的文件名称
来源: 互联网 发布时间:2015-05-25
本文导语: 怎么得到当前运行的程序的文件名称啊,带绝对路径的 比如/bin/a.o | char buf[1024]; char buf2[1024]; sprintf(buf,"/proc/%d/exe",getpid()); readlink(buf,buf2, sizeof(buf)); printf("%sn", buf2); | 如果你知道进...
怎么得到当前运行的程序的文件名称啊,带绝对路径的
比如/bin/a.o
比如/bin/a.o
|
char buf[1024];
char buf2[1024];
sprintf(buf,"/proc/%d/exe",getpid());
readlink(buf,buf2, sizeof(buf));
printf("%sn", buf2);
char buf2[1024];
sprintf(buf,"/proc/%d/exe",getpid());
readlink(buf,buf2, sizeof(buf));
printf("%sn", buf2);
|
如果你知道进程的pid的话可以到/proc下相应的目录中找
|
这个很容易,argv[0]所指的字符串就是了.
|
argv[0]的值可以是任何东西,由父进程在exec时给出。所以argv[0]只能是参考。
根据pid读取/proc下相应数据应该可以。
根据pid读取/proc下相应数据应该可以。
|
你在main里用 printf("the command string is %sn", argv[0]);看看
fierygnu(va_list)说的有一定道理,但是如果程序A用exec调用了另一个程序B,那么在B中显示的argv[0]就是B那也是合情合理的阿。
fierygnu(va_list)说的有一定道理,但是如果程序A用exec调用了另一个程序B,那么在B中显示的argv[0]就是B那也是合情合理的阿。
|
如果一个系统不mount /proc,查PID就不管用了,不过大部分系统还是有proc的
|
getcwd可以知道当前运行目录
argv[0]是程序的文件名
当然了,你运行的程序可能是在PATH目录下,而不在当前目录下,那样你就需要去查找PATH所有目录下存在相应的可执行文件了,可以用getenv,stat,access等调用
argv[0]是程序的文件名
当然了,你运行的程序可能是在PATH目录下,而不在当前目录下,那样你就需要去查找PATH所有目录下存在相应的可执行文件了,可以用getenv,stat,access等调用
|
为什么不试试 CoolQ() 的做法呢
#include
int main(int argc, char *argv[])
{
fprintf(stdout, "%sn", argv[0]);
}
#include
int main(int argc, char *argv[])
{
fprintf(stdout, "%sn", argv[0]);
}
|
用ps -ax 查进程名 , 再用find找文件
|
ps -ef