请帮忙,我使用的工具是kdevelop和qt4。在我的main.cpp上有错误,例如;
Error: sys/procset.h: No such files or directory
Error: sys/priocntl.h: No such files or directory
Error: sys/tspriocntl.h: No such files or directory
Error: sys/rtpriocntl.h: No such files or directory
In function 'int main(int. char**)':
Error: 'pcparms_t' was not declared in this scope
Error: expected ';' before 'pcparms'
Error: 'rtparms_t' was not declared in this scope
Error: 'rtparmsp' was not declared in this scope
Error: 'pcinfo_t' was not declared in this scope
Error: expected ';' before 'pcinfo'
Error: 'rtinfo_t' was not declared in this scope
Error: 'rtinfop' was not declared in this scope
warning: unused variable 'lret'
warning: unused variable 'priority'
...
...
...
*Exited with Status:2 *
我无法在Centos 5 Linux上找到实时的标题。另外,我不知道Linux的上述标题的等价性。我知道我必须为Solaris和Linux添加一个包含头文件的If语句,我不知道if / else语句中将包含哪些头文件。
当我通过将实时标题和函数注释掉来删除标题时,我会让它运行。
//pcparms_t pcparms;
//rtparms_t *rtparmsp;
//pcinfo_t pcinfo;
//rtinfo_t *rtinfop;
我的问题是什么是Linux的实时标题和功能或等同于Linux。我的应用程序代码是c ++和qt4之间的混合。在qt4方面他们是否需要使用实时功能?在Solaris上的c ++中我需要实时函数吗?如果是,我在哪里可以找到它们或者它们叫什么,我在哪里放置它们?
答案 0 :(得分:1)
这不是真正的QT相关问题,而是更多的移植Solaris-> Linux问题。
sys/procset.h
sys/priocntl.h
sys/tspriocntl.h
sys/rtpriocntl.h
这些文件都是Solaris特定的系统调用。它们是 priocntlset 的一部分 - 广义进程调度程序控件。
从联机帮助页
priocntlset(2) System Calls priocntlset(2)
NAME
priocntlset - generalized process scheduler control
SYNOPSIS
#include <sys/types.h>
#include <sys/procset.h>
#include <sys/priocntl.h>
#include <sys/rtpriocntl.h>
#include <sys/tspriocntl.h>
#include <sys/iapriocntl.h>
#include <sys/fsspriocntl.h>
#include <sys/fxpriocntl.h>
long priocntlset(procset_t *psp, int cmd, /* arg */ ...);
DESCRIPTION
The priocntlset() function changes the scheduling properties of running
processes. priocntlset() has the same functions as the priocntl() func-
tion, but a more general way of specifying the set of processes whose
scheduling properties are to be changed.
NOTES
Due to the lack of a priocntl() system call on Linux and FreeBSD...
Solaris和Linux之间处理进程的方式不同。这两个系统都是Unix的变种,但是您正在寻找的特定系统调用没有Linux等价物。基本上priocntlset用于(重新)调度过程。我不知道最新的Linux内核,或者已经有的调度程序,但是2.6(或2.4)内核上的任何好书都会有一个关于调度的部分和示例。
在Linux机器上启动的好地方是man syscalls
。