프로 세 스 PID 가 져 오기
먼저 현재 프로 세 스 의 이름 을 grep 에 전달 하려 면 main 의 argv [0] 를 통 해 실 행 될 때의 프로그램 이름 을 얻 을 수 있 습 니 다. 그러나 주의해 야 할 것 은 경 로 를 통 해 실 행 된 프로그램, 예 를 들 어./a. out, argv [0] 도./a. out 입 니 다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
void
program_unique_check(
const
char
*
program)
{
FILE *
fd;
pid_t id =
0
;
char
command[
50
]
=
{
0
}
;
char
pid_num[
50
]
=
{
0
}
;
const
char
*
program_name;
program_name =
strrchr (
program,
'/'
)
;
//
if
(
program_name)
++
program_name;
else
program_name =
program;
// ps -Ao pid,comm|grep xxx
sprintf(
command,
"ps -Ao pid,comm|grep %s"
,
program_name)
;
printf
(
"Command to excute: %s/n
"
,
command)
;
//
if
(
(
fd =
popen(
command,
"r"
)
)
==
NULL )
{
perror(
"popen"
)
;
exit(
EXIT_FAILURE)
;
}
// , PID, 20 (PID !)
fgets(
pid_num,
20
,
fd)
;
printf
(
"Result :/n
%s/n
"
,
pid_num)
;
//
id =
atoi(
pid_num)
;
printf
(
"DETECTED PID: %d/n
"
,
id)
;
//
if
(
getpid(
)
==
id)
printf
(
"This's my self: %d/n
"
,
id)
;
else
{
printf
(
"Here's one already running: %d/n
I'll kill him!/n
"
,
id)
;
//SIGKILL ,
if
(
kill (
id,
SIGKILL)
==
-
1
)
{
perror(
"kill"
)
;
exit(
EXIT_FAILURE)
;
}
}
}
int
main (
int
argc,
char
**
argv)
{
program_unique_check(
argv[
0
]
)
;
sleep (
10
)
;
return
0
;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.