读书人

代码有异常

发布时间: 2012-10-21 09:00:07 作者: rapoo

代码有错误
这个程序编译成功但是就是无法运行,运行直接提示 找不到命令是怎么回事?

C/C++ code
#include"fifo.h"int main(int argc,char **argv){  int readfifo,writefifo,dummyfd,fd;  char *ptr,buff[MAXLINE+1],fifoname[MAXLINE];  pid_t pid;  ssize_t n;  if((mkfifo(SERV_FIFO,FILE_MODE)<0)&&(errno!=EEXIST))    printf("can't create %s",SERV_FIFO);  readfifo=open(SERV_FIFO,O_RDONLY|O_NONBLOCK,0);  dummyfd=open(SERV_FIFO,O_WRONLY,0);  while((n=read(readfifo,buff,MAXLINE))>0)    {      if(buff[n-1]=='\n')    n--;      buff[n]='\0';      if((ptr=strchr(buff,' '))==NULL)    {      printf("bogus request: %s",buff);      continue;    }      *ptr++=0;      pid=atol(buff);      snprintf(fifoname,sizeof(fifoname),"/tmp/fifo.%ld",(long)pid);      if((writefifo=open(fifoname,O_WRONLY,0))<0)    {      printf("cannot open:%s",fifoname);      continue;    }      if((fd=open(ptr,O_RDONLY))<0)    {      snprintf(buff+n,sizeof(buff)-n,":can't open,%s\n",strerror(errno));      n=strlen(ptr);      write(writefifo,ptr,n);      close(writefifo);    }      else    {      while((n=read(fd,buff,MAXLINE))>0)        write(writefifo,buff,n);      close(fd);      close(writefifo);    }    }  exit(0);}


[解决办法]
那只能说明你代码有隐藏的错误,C++编译器不认为是错误的,我以前也遇到过这种情况,调试半天才弄好呢~~
[解决办法]
我试了一下,没问题。很可能是你包含的头文件有问题。


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include <ctype.h>

#define MAXLINE 100
#define SERV_FIFO "server_fifo"
#define FILE_MODE 0x1ff

int main(int argc,char **argv)
{
int readfifo,writefifo,dummyfd,fd;
char *ptr,buff[MAXLINE+1],fifoname[MAXLINE];
pid_t pid;
ssize_t n;

if((mkfifo(SERV_FIFO,FILE_MODE)<0)&&(errno!=EEXIST))
printf("can't create %s",SERV_FIFO);

readfifo=open(SERV_FIFO,O_RDONLY|O_NONBLOCK,0);


读书人网 >UNIXLINUX

热点推荐