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你是否#包括?