当前位置: 技术问答>linux和unix
各位大侠帮忙看看,我的代码错在哪里
来源: 互联网 发布时间:2015-11-21
本文导语: //Proc.h class Proc { public: Proc(char *pid); ~Proc(); long unsigned getUtime(); long unsigned getStime(); private: long unsigned utime,stime; } //Proc.cpp #include "Proc.h" #include #include #include #include #include using namespace std; char* skipWs(con...
//Proc.h
class Proc
{
public:
Proc(char *pid);
~Proc();
long unsigned getUtime();
long unsigned getStime();
private:
long unsigned utime,stime;
}
//Proc.cpp
#include "Proc.h"
#include
#include
#include
#include
#include
using namespace std;
char* skipWs(const char *p)
{
while(isspace(*p))
p++;
return (char *)p;
}
char* skipToken(const char *p)
{
while(isspace(*p))
p++;
while(*p&&!isspace(*p))
p++;
return (char *)p;
}
Proc::Proc(char *pid)
{
char buffer[4096],*p;
char *openProc=strcat("/proc",pid);
char *procStat=strcat(openProc,"/stat");
int fd,len;
fd=open(procStat,O_RDONLY);
len=read(fd,buffer,sizeof(buffer)-1);
close(fd);
buffer[len]='';
p=buffer;
p=strchr(p,'(')+1;//skip pid
char *q=strchr(p,')');
//name get the pid name
p=q+1;
p=skipWs(p);
p=skipToken(p);//skip stat
p=skipToken(p);//skip ppid
p=skipToken(p);//skip pgrd
p=skipToken(p);//skip session
p=skipToken(p);//skip tty
p=skipToken(p);//skip tty pgrp
p=skipToken(p);//skip flags
p=skipToken(p);//skip min flt
p=skipToken(p);//skip cmin flt
p=skipToken(p);//skip maj flt
p=skipToken(p);//skip cmaj flt
utime=strtoul(p,&p,10);
stime=strtoul(p,&p,10);
//test
printf("utime:%uln",utime);
printf("stime:%uln",stime);
}
unsigned long Proc::getUtime()
{
return utime;
}
unsigned long Proc::getStime()
{
return stime;
}
//main.cpp
#include "Proc.cpp"
#include
using namespcace std;
int main(int argc,char **argv)
{
char *pid;
printf("Pid:");
scanf("%s",pid);
Proc* last=new Proc(pid);
}
我编译时用g++,报错总是命名空间namespace有错,由于对C++不熟悉,对一些调用用的是C语言,
我希望把需要的东西封装在类里,郁闷了,写出了四不像的程序,希望能有高手指点,会不胜感激
class Proc
{
public:
Proc(char *pid);
~Proc();
long unsigned getUtime();
long unsigned getStime();
private:
long unsigned utime,stime;
}
//Proc.cpp
#include "Proc.h"
#include
#include
#include
#include
#include
using namespace std;
char* skipWs(const char *p)
{
while(isspace(*p))
p++;
return (char *)p;
}
char* skipToken(const char *p)
{
while(isspace(*p))
p++;
while(*p&&!isspace(*p))
p++;
return (char *)p;
}
Proc::Proc(char *pid)
{
char buffer[4096],*p;
char *openProc=strcat("/proc",pid);
char *procStat=strcat(openProc,"/stat");
int fd,len;
fd=open(procStat,O_RDONLY);
len=read(fd,buffer,sizeof(buffer)-1);
close(fd);
buffer[len]='';
p=buffer;
p=strchr(p,'(')+1;//skip pid
char *q=strchr(p,')');
//name get the pid name
p=q+1;
p=skipWs(p);
p=skipToken(p);//skip stat
p=skipToken(p);//skip ppid
p=skipToken(p);//skip pgrd
p=skipToken(p);//skip session
p=skipToken(p);//skip tty
p=skipToken(p);//skip tty pgrp
p=skipToken(p);//skip flags
p=skipToken(p);//skip min flt
p=skipToken(p);//skip cmin flt
p=skipToken(p);//skip maj flt
p=skipToken(p);//skip cmaj flt
utime=strtoul(p,&p,10);
stime=strtoul(p,&p,10);
//test
printf("utime:%uln",utime);
printf("stime:%uln",stime);
}
unsigned long Proc::getUtime()
{
return utime;
}
unsigned long Proc::getStime()
{
return stime;
}
//main.cpp
#include "Proc.cpp"
#include
using namespcace std;
int main(int argc,char **argv)
{
char *pid;
printf("Pid:");
scanf("%s",pid);
Proc* last=new Proc(pid);
}
我编译时用g++,报错总是命名空间namespace有错,由于对C++不熟悉,对一些调用用的是C语言,
我希望把需要的东西封装在类里,郁闷了,写出了四不像的程序,希望能有高手指点,会不胜感激
|
#include "Proc.cpp"
#include
using namespcace std;
这里用不着using,因为这里没用到C++标准库的头文件,也就没有用到std名字空间中的东西。
还不,include一个cpp文件,不太好吧。通常把函数声明放.h文件,函数实现放cpp文件,然后只include头文件,否则很容易搞出重复定义来。
#include
using namespcace std;
这里用不着using,因为这里没用到C++标准库的头文件,也就没有用到std名字空间中的东西。
还不,include一个cpp文件,不太好吧。通常把函数声明放.h文件,函数实现放cpp文件,然后只include头文件,否则很容易搞出重复定义来。