Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 错误:‘;O#u创建’;未声明(首次在此函数中使用)_C_Linux_Signals_Producer Consumer - Fatal编程技术网

C 错误:‘;O#u创建’;未声明(首次在此函数中使用)

C 错误:‘;O#u创建’;未声明(首次在此函数中使用),c,linux,signals,producer-consumer,C,Linux,Signals,Producer Consumer,下面的代码应该同步两个进程,一个生产者写入一些整数,另一个消费者读取这些整数,现在执行时会出现以下错误: ‘O_CREATE’ undeclared (first use in this function) 但是我已经包括了fcntl.h,还有什么问题 int main(void) { int fd, n, i; pid_t pid, ppid; char buf[1]; if((fd=open("/tmp/data_file", O_APPEND|O_CREATE, 0640)) &l

下面的代码应该同步两个进程,一个生产者写入一些整数,另一个消费者读取这些整数,现在执行时会出现以下错误:

‘O_CREATE’ undeclared (first use in this function)
但是我已经包括了
fcntl.h
,还有什么问题

int main(void) 
{
int fd, n, i; 
pid_t pid, ppid; 
char buf[1];
if((fd=open("/tmp/data_file", O_APPEND|O_CREATE, 0640)) <0) exit(1);
sigset(SIGTERM,SIG_IGN);/* signal */   ; sigset(SIGINT,SIG_IGN); /* signal */ 
pid=fork(); 
switch (pid) { 
    case -1: { perror(“FORK”); exit(1); }
    case 0: /* child process - Producer */ 
        sigset(SIGUSR1,wakeup);   
        sighold(SIGUSR1);       /* block / hold signals SIGUSR1 until sigpause*/ 
        for (i=0; i<=100; i++) { 
            /* sleep a random amount of time */ 
            n = (int)(getpid()%256); 
            srand((unsigned)n); 
            sleep(rand() %5);
            /* writes a character in file */ 
            sprintf(buf,"%d",i); 
            write(fd, buf,sizeof(buf)); 
            fprintf(stderr,"Producer PID=%d value = %d\n",getpid(), i); 
            ppid=getppid(); 
            kill(ppid, SIGUSR2);    
            sigpause(SIGUSR1);  /* pause(); until SIGUSR! received*/ 
        }  
break;


default:    /* -parent code - Consumer */ 
        sigset(SIGUSR2,wakeup);
        sighold(SIGUSR2);       /* block / hold signals SIGUSR2 until sigpause*/ 
        for (i=0; i<=100; i++) { 
            /* sleep a random amount of time */ 
            n = (int)(getpid()%256); 
            srand((unsigned)n); 
            sleep(rand() %5);
            sigpause(SIGUSR2); /* pause(); */ 
            /* reads a character from file */ 
            read(fd, buf,sizeof(buf)); 
            fprintf(stderr,"Consumer PID=%d value=%d\n",getpid(),atoi(buf));
            kill(pid, SIGUSR1) ;
} 
break; 
} 
exit(0); 
}
int main(无效)
{
int-fd,n,i;
pid_t pid,ppid;
char-buf[1];

如果((fd=open(“/tmp/data_file”,O_APPEND | O_CREATE,0640))宏名称应为
O_CREATE
,而不是
O_CREATE

是的,我也讨厌Unix世界中的这些名字

有一次有人问肯·汤普森,如果他重新设计UNIX系统,会有什么不同。他的回答是:“我会用
e
拼写
create


lol这就是他们的意思:P它现在说在使用内置函数“exit”[默认启用]的exit()不兼容隐式声明时有错误,这是什么意思???@TIMTAYLOR你是否
#包括