把软件注册成服务,select和read一直成功,都到的都是数字0,谁在一直往我的程序STDIN_FILENO一直写东西?。
代码:
auto nRet = select(STDIN_FILENO + 1, &rdfs, NULL, NULL, &tv);
char szBuf = {};
auto nRet = read(STDIN_FILENO, &szBuf, sizeof(szBuf));
select和read都成功,STDIN_FILENO一直可读,cpu都用完了不知道啥原因。
把软件注册成服务后STDIN_FILENO一直可读是什么原因。
-
- 帖子: 30
- 注册时间: 2011-12-08 22:46
- astolia
- 论坛版主
- 帖子: 6569
- 注册时间: 2008-09-18 13:11
Re: 把软件注册成服务后STDIN_FILENO一直可读是什么原因。
如果你是把char szBuf[] = {};写成了char szBuf = {};,那么sizeof(szBuf)得到的结果是0,read实际上没去读东西,所以返回0
-
- 帖子: 30
- 注册时间: 2011-12-08 22:46
-
- 帖子: 30
- 注册时间: 2011-12-08 22:46
Re: 把软件注册成服务后STDIN_FILENO一直可读是什么原因。
测试发现
注册服务的[Service]中
这种写法不会收的0,ExecStart=/bin/bash -c "/home/kk/111/CMakeProject1"
这种写法会收的0,ExecStart=/home/kk/111/CMakeProject1
有谁知道怎么回事么?
注册服务的[Service]中
这种写法不会收的0,ExecStart=/bin/bash -c "/home/kk/111/CMakeProject1"
这种写法会收的0,ExecStart=/home/kk/111/CMakeProject1
有谁知道怎么回事么?
- astolia
- 论坛版主
- 帖子: 6569
- 注册时间: 2008-09-18 13:11
-
- 帖子: 30
- 注册时间: 2011-12-08 22:46
Re: 把软件注册成服务后STDIN_FILENO一直可读是什么原因。
已解决。刚刚查了下select可读也可以表示文件结束。read我没判定返回值为0的情况,为0表示文件结束了。