스레드/Proc/PID/CMDLINE 설정?
-
02-07-2019 - |
문제
에 Linux/NPTL, 스레드는 일종의 프로세스로 생성됩니다.
내 프로세스 중 일부는 이상한 cmdline이 있음을 알 수 있습니다.
cat /proc/5590/cmdline
hald-addon-storage: polling /dev/scd0 (every 2 sec)
내 프로세스의 각 스레드에 대해 어떻게 그렇게 할 수 있는지 아이디어가 있습니까? 디버깅에 매우 도움이 될 것입니다.
/지금은 HAL 소스에서 조사하고 있습니다
감사해요
해결책
휴대용 방식 으로이 작업을 수행하려면 여러 개의 UNIX 변형에 걸쳐 작동하는 것이 거의 없습니다.
당신이해야 할 일은 발신자 프로세스가 argv [0]
프로세스 출력에서보고 싶은 이름과 실제 실행 파일을 가리키는 파일 이름을 가리키는 인수.
다음을 사용하여 쉘 에서이 동작을 시도 할 수 있습니다.
exec -a "This is my cute name" bash
현재의 배쉬 프로세스를 명명 된 것으로 대체합니다. "This is my cute name"
.
C 에서이 작업을 수행하려면 소스 코드를 볼 수 있습니다. sendmail
또는 광범위하게 포팅 된 다른 소프트웨어의 소프트웨어를 제공하고이를 지원하기 위해 운영 체제에 필요한 모든 변형을 찾습니다.
일부 운영 체제에는 다음이 있습니다 setproctitle(3)
API, 일부 다른 사람들은 당신이의 내용을 무시할 수 있습니다. argv [0]
그리고 그 결과를 보여줍니다.
다른 팁
argv
쓰기 가능한 문자열을 가리 킵니다. 그들에게 물건을 쓰십시오.
#include <string.h>
#include <unistd.h>
int
main(int argc, char** argv)
{
strcpy(argv[0], "Hello, world!");
sleep(10);
return 0;
}
bah .. 코드는 그다지 좋지 않습니다. 속임수는 환경을 재사용하는 것입니다 (여기서 Argv_buffer) 포인터 :
memset (argv_buffer[0] + len, 0, argv_size - len);
argv_buffer[1] = NULL;
더 나은 아이디어가 있습니까?
다른 스레드에서 작동합니까?