2011-06-20 75 views
2

我正在尝试使用popen访问/proc/net/dev文件,其中-r--r--r-- 1 root root 0权限。该代码是尽可能公平:权限在C(linux)中使用popen时出现问题

main(){ 
FILE *f; 
f=popen("/proc/net/dev","r"); 
pclose(f);} 

登录为根,编译&运行该程序后,我得到这个:

SH:的/ proc /净的/ dev:权限被拒绝。

你能帮我解决这个问题吗? 谢谢

回答

1

popen()用于打开管道到另一个进程,所提供的路径必须是可执行文件,而不是设备条目。您可能需要open()fopen()

3

我认为你看着这个错误的方式,popen是从应用程序打开管道。 /proc/net/dev不是应用程序,而是文件。试着看看fopen。

f=fopen("/proc/net/dev", "r"); 
fclose(f); 
+0

作为一个侧面说明;你得到的权限被拒绝了,因为popen试图执行没有执行权限的/ proc/net/dev(它不应该这样做)。 – Suroot

0

use read;欲了解更多信息,请在终端上阅读

+0

阅读需要一个现有的打开文件描述符。 – Suroot

+0

后来编辑:对不起,这是上午6点,我有点困了:)他试图打开,而不是阅读。我明白。 – Adi