- 论坛徽章:
- 0
|
本帖最后由 chenyx 于 2012-05-13 08:54 编辑
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#define FIFO_NAME "/tmp/my_fifo"
int main(int argc,char *argv[])
{
int res;
int open_mode=0;
int i;
if(argc<2)
{
fprintf(stderr,"usage:%s < some combination of O_RDONLY O_WRONLY O_NONBLOCK>\n",*argv);
exit(EXIT_FAILURE);
}
for(i=1;i<argc;i++)
{
if(strncmp(*++argv,"O_RDONLY",8)==0)
open_mode |=O_RDONLY;
if(strncmp(*++argv,"O_WRONLY",8)==0)
open_mode |=O_WRONLY;
if(strncmp(*++argv,"O_NONBLOCK",10)==0)
open_mode |=O_NONBLOCK;
}
printf("%d\n",open_mode);
if(access(FIFO_NAME,F_OK)==-1)
{
res=mkfifo(FIFO_NAME,0777);
if(res!=0)
{
fprintf(stderr,"could not cresat fifo %s\n",FIFO_NAME);
exit(EXIT_FAILURE);
}
}
printf("process %d opening FIFO\n",getpid());
res=open(FIFO_NAME,open_mode);
printf("process %d result %d\n",getpid(),res);
sleep(5);
if(res!=-1)
{
close(res);
}
printf("process %d finished\n",getpid());
exit(EXIT_SUCCESS);
}
程序如上为什么我编译后,执行
[root@localhost li]# gcc fifo2.c
[root@localhost li]# ./a.out O_RDONLY
段错误
这是什么原因啊?
那两个表情 我明明写的是 8 啊
|
|