碰倒一个神奇的有关问题,linux权限让你到处碰钉子

   阅读
碰倒一个神奇的问题,linux权限让你到处碰钉子
最近老碰倒一些权限的问题,经常出现一下莫名其妙的错误。
我写了个可执行文件,去读内核的日志,执行文件的名字叫catkmsg,
代码catkmsg.c如下 :

C/C++ code

int main(int argc, char *argv[])   
{
        int  buf[BUF_SIZE+1];
       
        int n;
        int wfd;
    
 
        wfd = fileno(stdout);
    while(1){
        
        n = klogctl(KLOG_READ_CLEAR,buf,BUF_SIZE);
        LOGW("read log n=%d",n);
        write(wfd,buf,n);
        usleep(500*1000);
    }
    
    close(wfd);
    return 0;   
}  



在java中,使用如下代码调用,
dmesgProc = Runtime.getRuntime().exec("catkmsg");
但读不到数据,返回的n为-1

但是如果我使用,buzybox中的dmesg却可以读到内核日志,如下
dmesgProc = Runtime.getRuntime().exec("dmesg")

其实我写的catkmsg是模仿dmesg写的,但为什么dmesg可以读到,catkmsg却读不到日志呢,
请帮忙看看,谢谢?




------解决方案--------------------
没有人气,帮顶一下吧,希望楼主尽快解决问题
------解决方案--------------------
探讨
没有人气,,希望楼主尽快解决问题

------解决方案--------------------
不懂,帮顶下。
多找找 klogctl的用法
------解决方案--------------------
KLOG_READ_CLEAR,
clear? 你有权限这样做?read我觉得还行。你调dmesg,人家也只是读吧。。。
再说你这样调你确定是buzybox的,系统好像也有个binary的dmesg
------解决方案--------------------
KLOG_READ_CLEAR,
clear? 你有权限这样做?read我觉得还行。你调dmesg
阅读
上一篇:关于surface的有关问题 下一篇:返回列表