我在以下概念中编写了c程序。
main_process.c
/* check the give process id is alive or not. if not alive then start that process.*/
void * thread1()
{
while(1) {
if (kill(pid, 0)!=0) {
system(process1);
}
}
}
/* Get the process id for the started process */
void *thread2() {
while (1) {
FILE *fp = popen("ps -af | grep "process1");
get_pid(pid, fp);
pclose(pid);
}
}
get_pid(pid, fp) {
/* Get the pid for the new process using getline() and string parsing using string token function, its long code so not pasted here.*/
}
main(int arg, char *args[]) {
pthread_t tid1, tid2;
pthread_create(tid1,NULL, &thread1, NULL);
pthread_create(tid2, NULL, &thread2, NULL);
//Checks thread created success or not.
pthread_join(tid1);
pthread_join(tid2);
}
process:
main() {
char input[100];
while (1) {
fgets(input, 100, stdin);
printf("\n Input is %s \n", input);
}
我首先启动了process
程序,然后获取pid
并启动main_process
。
过了一段时间,我使用process
杀死了kill -9 pid
程序。因此,thread1
中main_process
的if条件已通过并启动process
程序。
从终端获取输入。过了一段时间,我再次使用process
杀死了kill -9 pid
程序。因此thread1
再次启动process
计划。
问题如下:当process
程序第二次启动时,从终端获取不需要的输入。我不知道谁在发送,键盘问题或我的程序概念。
请告知我犯错的地方。