, 당신은 다음과 같이 실행 EXE 파일의 전체 경로를 얻을 수 있습니다 : 예를 들어
# ls -l /proc/<pid>/path/a.out
# ls -l /proc/$$/path/a.out
lrwxrwxrwx 1 root root 0 Nov 24 17:19 /proc/14921/path/a.out -> /usr/bin/bash
이렇게하면 실행 파일 경로를 얻을 수 있습니다. 예컨대 :
# readlink -f /proc/$$/path/a.out
/usr/bin/bash
를 들어
# readlink -f /proc/<pid>/path/a.out
그리고 프로그래밍이처럼 작업을 수행 할 수 있습니다 :
더 convinient 방법입니다
# ./a.out <pid>
:
#include <stdio.h>
#include <unistd.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[]) {
char outbuf[BUF_SIZE] = {'\0'};
char inbuf[BUF_SIZE] = {'\0'};
ssize_t len;
if (argc != 2) {
printf ("Invalid argument\n");
return -1;
}
snprintf (inbuf, BUF_SIZE, "/proc/%s/path/a.out", argv[1]);
if ((len = readlink(inbuf, outbuf, BUF_SIZE-1)) != -1) {
outbuf[len] = '\0';
} else {
perror ("readlink failed: ");
return -1;
}
printf ("%s\n", outbuf);
return 0;
}
그것은 사용의
Solaris 11.3 SRU 5.6 이상 있습니까? –
[psinfo \ _t solaris의 가능한 복제본은 해당 필드에 전체 프로세스 이름을 포함하지 않습니다] (https://stackoverflow.com/questions/35888100/psinfo-t-solaris-does-not-contain-full-process-name- in-its-field) –