Просто пытался написать что-то более простое.
#!/usr/bin/python
from subprocess import Popen, PIPE
import datetime
import time
popen = Popen(["/bin/sleep", "10"]);
pid = popen.pid
sttime = time.time();
waittime = 3
print "Start time %s"%(sttime)
while True:
popen.poll();
time.sleep(1)
rcode = popen.returncode
now = time.time();
if [ rcode is None ] and [ now > (sttime + waittime) ] :
print "Killing it now"
popen.kill()
Это решение не является полностью общим, но работает для определенного типа данных:
template <class T>
class Vector {
public:
virtual void DoSomething () {
printf("general Vector template");
}
};
template<>
class Vector <Vector<int>> {
public:
void DoSomething () = delete;
};
int main(int argc, const char * argv[]) {
Vector<int> iv;
iv.DoSomething(); // OK;
Vector<Vector<int>> viv;
viv.DoSomething(); // ERROR: attempt to use a deleted function;
return 0;
}