在c程序中从终端获取不需要的信号/输入

时间:2015-06-26 07:44:45

标签: c linux pthreads system interprocess

我在以下概念中编写了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程序。因此,thread1main_process的if条件已通过并启动process程序。

从终端获取输入。过了一段时间,我再次使用process杀死了kill -9 pid程序。因此thread1再次启动process计划。

问题如下:当process程序第二次启动时,从终端获取不需要的输入。我不知道谁在发送,键盘问题或我的程序概念。

请告知我犯错的地方。

0 个答案:

没有答案