我有一个fork()用于创建子进程的程序.我已经看到了各种wait()用于在关闭之前等待子进程结束的示例,但是我想知道我能做些什么来简单地检查文件进程是否仍在运行.
我基本上有一个无限循环,我想做一些像:
if(child process has ended) break;
我怎么能这样做?
我最近同意帮助一个朋友制作他一直在做的游戏,我决定我更喜欢用Java编写它.我不确定在Java中使用3D的最佳途径是什么.我发现大多数人都在谈论Java 3dJava中的3D图形,这似乎基本上是一个包装器Directx,openGL但我也发现Java 3d自2008年以来一直没有积极开发.它仍然是最好用的或是在那里更积极的发展会更好.我已经看过一些关于其他一些API的讨论,但Java 3d似乎有更好的文档,并且有一些相当不错的关于Java编程的书籍似乎都是基于Java 3d.
我正在开发一个rand()在构造函数中使用a的C++类.我真的希望这个班级能够在各方面照顾好自己,但我不确定在哪里播种rand().
如果我rand()在构造函数中播种,那么每次构造我的对象类型的新实例时它都将被播种.因此,如果我按顺序创建3个对象,它们将在同一秒内创建,因此具有相同的种子rand(),为对象的3个实例中的每个实例生成完全相同的数据.
我想rand()在类代码中播种,而不是在创建对象之前必须在我的程序的main函数中进行.我想做一个static bool seeded;表示是否rand()已播种的变量,但我不确定如何在创建类时将其初始化为false.
我的想法是这样的
myConstructor(){
if(!seeded){
srand(time(NULL));
seeded = true;
}
myVariable = rand()%maxVal;
}
Run Code Online (Sandbox Code Playgroud)
我想如果我能弄清楚如何在程序开始时将静态值初始化为false,那么这将有效.我的理解是,如果对象的所有实例都是静态的,那么将此静态值更改为true将会传递该对象的所有实例,因此只会在第一次创建对象类型时执行种子函数.
我目前正在尝试在项目的使用JOGL和JMonkeyEngine项目之间做出决定,所以我想了解一下每个项目的基础知识,并决定我喜欢哪个项目.有没有人有任何书籍或网络资源建议学习如何使用每一个?我真的更喜欢提供大量详细信息和示例的内容,这些内容使用良好的风格而不是简短的在线教程,而且代码示例质量很差.官方文档总是很好,但我还没有找到它. JMonkeyEngine说它有完整的文档,但我还没有在他们的网站上找到它.任何信息,将不胜感激.
我应该提一下,我以前从未使用OpenGL过.如果我一起去,JOGL我将需要学习所有的OpenGL基础知识,所以OpenGL如果JOGL资源没有全面详细介绍,我也需要很好的资源.
我正在处理一个对象,该对象包含一个queues数组长度的数组,该数组长度在调用构造函数之前不会被确定.基本上它看起来像下面这样
#include <queue>
class myClass{
public:
//public functions
private:
//private functions and variables
queue<int>* myQueue;
};
Run Code Online (Sandbox Code Playgroud)
它初始化如下:
myClass::myClass(int numOfQueues){
myQueue = new queue<int>[numOfQueues];
}
Run Code Online (Sandbox Code Playgroud)
看起来这一切都很美妙.它的功能与我希望的完全一样,但现在每次退出程序时都会出现分段错误.该类中有一些其他数组以相同的方式初始化,但这些数组是类型bool而int不是队列.我的析构函数看起来像:
myClass::~myClass(){
delete boolArray;
delete intArray;
delete myQueue;
}
Run Code Online (Sandbox Code Playgroud)
现在假设这个析构函数工作的boolArray和intArray指针,因为我没有开始变得段错误,直到我说myQueue.有谁知道编写析构函数的正确方法是什么?是否有可能这就是我必须做的事情,并且析构函数在适当的时候没有被调用?