linux下到底有哪个IDE支持函数和自定义变量的语法高亮的???

运行后机子就卡死了。 高手帮忙解释下

代码:
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
#include<sys/ipc.h>
#include<sys/sem.h>

union semun
{
   int val;
   struct semid_ds *buf;
   unsigned short int *array;
   struct seminfo *_buf;
};

struct sembuf SBuf;
int smid;

int p(int);
int v(int);
void process1();
void process2();
void process3();
void process4();
void process5();
void process6();

int main(void){
   union semun pps;
   pid_t pcs1,pcs2,pcs3,pcs4,pcs5,pcs6;
   int i=0;
   pps.val = 0;   
   smid = semget(IPC_PRIVATE,5,IPC_CREAT | 0777);

   for(i = 0;i < 5;i++)
   {
      semctl(smid,i,SETVAL,pps);
   }
   
   
   for(i = 0;i < 10;i++){
      if((pcs1 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs1 == 0){
                process1();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs2 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs2 == 0){
                process2();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs3 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs3 == 0){
                process3();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs4 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs4 == 0){
                process4();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs5 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs5 == 0){
                process5();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs6 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs6 == 0){
                process6();
             }
          }
}

int p(int num)
{
   SBuf.sem_num = num;
   SBuf.sem_op = -1;
   SBuf.sem_flg = IPC_NOWAIT;
   return(semop(smid,&SBuf,1));
}

int v(int num)
{
   SBuf.sem_num = num;
   SBuf.sem_op = 1;
   SBuf.sem_flg = IPC_NOWAIT;
   return(semop(smid,&SBuf,1));
}

void process1()
{
   printf("This is process 1~\n");
        v(0);
   v(0);
}
void process2()
{
   if(p(0) != -1)
   {   
      printf("this is process 2~\n");
      v(1);   
      v(0);
   }
}
void process3()
{
   if(p(0) != -1)
   {   
      printf("this is process 3~\n");
      v(2);   
      v(1);
   }
}
void process4()
{
   if(p(1) != -1)
   {   
      printf("this is process 4~\n");
      v(1);   
      v(3);
   }
}
void process5()
{   
   if((p(1) != -1)&&(p(2) != -1))
   {   
      printf("this is process 5~\n");
      v(1);   
      v(2);
      v(4);
   }
}
void process6()
{
   if((p(3) != -1)&&(p(4) != -1))
   {   
      printf("this is process 6~\n");
      v(3);   
      v(4);
   }
}

作者: momar   发布时间: 2011-03-04

运行后机子就卡死了。 高手帮忙解释下

代码:
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
#include<sys/ipc.h>
#include<sys/sem.h>

union semun
{
   int val;
   struct semid_ds *buf;
   unsigned short int *array;
   struct seminfo *_buf;
};

struct sembuf SBuf;
int smid;

int p(int);
int v(int);
void process1();
void process2();
void process3();
void process4();
void process5();
void process6();

int main(void){
   union semun pps;
   pid_t pcs1,pcs2,pcs3,pcs4,pcs5,pcs6;
   int i=0;
   pps.val = 0;   
   smid = semget(IPC_PRIVATE,5,IPC_CREAT | 0777);

   for(i = 0;i < 5;i++)
   {
      semctl(smid,i,SETVAL,pps);
   }
   
   
   for(i = 0;i < 10;i++){
      if((pcs1 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs1 == 0){
                process1();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs2 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs2 == 0){
                process2();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs3 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs3 == 0){
                process3();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs4 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs4 == 0){
                process4();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs5 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs5 == 0){
                process5();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs6 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs6 == 0){
                process6();
             }
          }
}

int p(int num)
{
   SBuf.sem_num = num;
   SBuf.sem_op = -1;
   SBuf.sem_flg = IPC_NOWAIT;
   return(semop(smid,&SBuf,1));
}

int v(int num)
{
   SBuf.sem_num = num;
   SBuf.sem_op = 1;
   SBuf.sem_flg = IPC_NOWAIT;
   return(semop(smid,&SBuf,1));
}

void process1()
{
   printf("This is process 1~\n");
        v(0);
   v(0);
}
void process2()
{
   if(p(0) != -1)
   {   
      printf("this is process 2~\n");
      v(1);   
      v(0);
   }
}
void process3()
{
   if(p(0) != -1)
   {   
      printf("this is process 3~\n");
      v(2);   
      v(1);
   }
}
void process4()
{
   if(p(1) != -1)
   {   
      printf("this is process 4~\n");
      v(1);   
      v(3);
   }
}
void process5()
{   
   if((p(1) != -1)&&(p(2) != -1))
   {   
      printf("this is process 5~\n");
      v(1);   
      v(2);
      v(4);
   }
}
void process6()
{
   if((p(3) != -1)&&(p(4) != -1))
   {   
      printf("this is process 6~\n");
      v(3);   
      v(4);
   }
}

作者: momar   发布时间: 2011-03-04

运行后机子就卡死了。 高手帮忙解释下

代码:
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
#include<sys/ipc.h>
#include<sys/sem.h>

union semun
{
   int val;
   struct semid_ds *buf;
   unsigned short int *array;
   struct seminfo *_buf;
};

struct sembuf SBuf;
int smid;

int p(int);
int v(int);
void process1();
void process2();
void process3();
void process4();
void process5();
void process6();

int main(void){
   union semun pps;
   pid_t pcs1,pcs2,pcs3,pcs4,pcs5,pcs6;
   int i=0;
   pps.val = 0;   
   smid = semget(IPC_PRIVATE,5,IPC_CREAT | 0777);

   for(i = 0;i < 5;i++)
   {
      semctl(smid,i,SETVAL,pps);
   }
   
   
   for(i = 0;i < 10;i++){
      if((pcs1 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs1 == 0){
                process1();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs2 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs2 == 0){
                process2();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs3 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs3 == 0){
                process3();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs4 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs4 == 0){
                process4();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs5 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs5 == 0){
                process5();
             }
          }
             
   for(i = 0;i < 10;i++){
      if((pcs6 = fork()) < 0){
         printf("error in fork().\n");
           exit(1);
             }
             else if (pcs6 == 0){
                process6();
             }
          }
}

int p(int num)
{
   SBuf.sem_num = num;
   SBuf.sem_op = -1;
   SBuf.sem_flg = IPC_NOWAIT;
   return(semop(smid,&SBuf,1));
}

int v(int num)
{
   SBuf.sem_num = num;
   SBuf.sem_op = 1;
   SBuf.sem_flg = IPC_NOWAIT;
   return(semop(smid,&SBuf,1));
}

void process1()
{
   printf("This is process 1~\n");
        v(0);
   v(0);
}
void process2()
{
   if(p(0) != -1)
   {   
      printf("this is process 2~\n");
      v(1);   
      v(0);
   }
}
void process3()
{
   if(p(0) != -1)
   {   
      printf("this is process 3~\n");
      v(2);   
      v(1);
   }
}
void process4()
{
   if(p(1) != -1)
   {   
      printf("this is process 4~\n");
      v(1);   
      v(3);
   }
}
void process5()
{   
   if((p(1) != -1)&&(p(2) != -1))
   {   
      printf("this is process 5~\n");
      v(1);   
      v(2);
      v(4);
   }
}
void process6()
{
   if((p(3) != -1)&&(p(4) != -1))
   {   
      printf("this is process 6~\n");
      v(3);   
      v(4);
   }
}

作者: momar   发布时间: 2011-03-04