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