我尝试使用C程序读取文件/proc/'pid'/status。代码如下,即使我使用sudo来运行它,提示仍然不断抛出“无法打开文件”。如果您对解决此问题有任何想法,请告诉我。谢谢

理查德

...

int main (int argc, char* argv[]) {
  string line;
  char* fileLoc;
  if(argc != 2)
  {
     cout << "a.out file_path" << endl;
     fileLoc = "/proc/net/dev";
  } else {
     sprintf(fileLoc, "/proc/%d/status", atoi(argv[1]));
  }
  cout<< fileLoc << endl;

  ifstream myfile (fileLoc);
  if (myfile.is_open())
  {
    while (! myfile.eof() )
    {
      getline (myfile,line);
      cout << line << endl;
    }
    myfile.close();
  }

  else cout << "Unable to open file";

  return 0;
}

最佳答案

避免在C++中使用C字符串。您忘记分配这个了。 stringstream将为您分配并具有sprintf功能。

int main (int argc, char* argv[]) {
  string line;
  ostringstream fileLoc;
  if(argc != 2)
  {
     cout << "a.out file_path" << endl;
     fileLoc << "/proc/net/dev";
  } else {
     fileLoc << "/proc/" << argv[1] << "/status";
  }
  cout<< fileLoc.str() << endl;

  ifstream myfile (fileLoc.str().c_str());

09-17 22:23