linux c 调用system(“命令”),在执行命令时报没有权限

Li_Eddy 2017-08-01 09:45:32
1. 将system单独调用是没有问题的,即直接在main里调用如下:
int main()
{
system("free -b | awk '{print $2,$3}' > mem2");
}

可以正常运行

2. 在一个函数里调用system,报没有权限,如下:

long CMemoryLeakHunterLinux::GetMemInfo()
47 {
48 char buff[256];
49 FILE* fd;
50 long nTotal;
51 long nUsed;
52
53 char *pLine;
54
55 if(system("free -b | awk '{print $2,$3}' > mem2"));
56 return 0;
57 memset(buff, 0, 256);
58
59 if((fd = fopen("mem2", "rb") )<0)
60 {
61 return 0;
62
63 }
64
65 fread(buff,1, sizeof(buff) , fd);
66 pLine = strstr(buff, "\n");
67 nTotal= atoi(pLine);
68 pLine= strstr(pLine, " ");
69 nUsed= atoi(pLine);
70 fclose(fd);
71 return nUsed;
72 }

在程序运行时,报错:sh: mem2: Permission denied
...全文
969 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Li_Eddy 2017-08-01
  • 打赏
  • 举报
回复
解决方案: 最终没有找到没有权限的原因。 采用popen代替system,功能得以实现。 #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream);
rayw0ng 2017-08-01
  • 打赏
  • 举报
回复
可能你的 mem2 文件权限出了点问题,比如曾经用管理员权限运行过你的程序。 删掉 mem2 文件重新试试。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧