내가 미리 정의 된 루프를 사용하지 않고 무한히 매 3 초마다 인쇄 PID와 PPID와 루프 C에서 프로그램을 작성하려는 당신이 잘 이상한 수면 동작은
을하고 희망 (아무 잠시 동안 아무를 ..)문제는 신호 처리기 내부에서 절전 시스템 호출을 사용할 때 아무 것도 인쇄하지 않지만 주석을 달아서 무언가를 반복하고 내가 원하는 것을 인쇄 할 때 문제가되는 것입니다.
다음은 C 표준은 거의 만이 글로벌 상태에 영향을 미치는 신호 처리기 한 일을 할 수있는 코드
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
#include<sys/wait.h>
void handle1(int signum){
//sleep(3); // when i remove the sleep it loop infinitly and prints
printf("pid=%d ppid=%d",getpid(),getppid());
if(signum==SIGUSR1){
kill(getpid(),SIGUSR1);
}
}
int main(int argc , char* argv[]){
signal(SIGUSR1,handle1);
kill(getpid(),SIGUSR1);
}
* 신호 처리기에서 * async-signal-safe 함수 만 안전하게 호출 할 수 있습니다. 'sleep()'도'printf()'도 비동기 신호에 안전하지 않습니다. http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04 –
을 참조하십시오. 결국 루프를 사용할 수있는 방법이 없다고 생각합니다. 그래서 문제는 제가 사용했던 접근법에 있습니다. –