[英]kill child process exec
我需要你的帮助。 我想通过ifconfig.me获取我的Beaglebone的公共IP地址。
如果我有现有的互联网连接,则可以正常运行。 如果我没有互联网连接,则该请求应中止。 这是我的代码:
function publicIP_www(callback){
try{
exec('curl ifconfig.me',{timeout:3000}, function(error, stdout, stderr){
callback(stdout); });
}
catch (err){
callback("000.000.000.000");
}
}
然后,返回的IP地址将显示在浏览器的网站上。 如果没有互联网连接,浏览器将永远计算。 似乎调用exec ......没有终止。
我期待着您的支持,并希望有人能告诉我我做错了什么。
最好的问候汉斯
由于无法看到您的代码,很难预测在您的情况下它为什么不起作用。 但是您可以尝试下一个效果很好的方法。 当然,这很脏,只是一个例子。
下一个代码是从WebStorm IDE中的模板创建的“ Node.js Express App + Jade”项目的index.js文件的。
const util = require('util');
const exec = util.promisify(require('child_process').exec);
....
....
router.get('/', async function(req, res, next) {
try {
const {stdout, stderr} = await exec('curl ifconfig.me');
res.render('index', { title: stdout});
}
catch (err) {
res.render('index',{ title: "000.000.000.000"});
}
});
或使用
const util = require('util');
const exec = require('child_process').exec;
function publicIP_www(callback){
exec('curl ifconfig.me',{timeout:3000}, function(error, stdout, stderr){
if (error) {
return callback("000.000.000.000");
}
callback(stdout);
});
}
router.get('/', function(req, res, next) {
publicIP_www((title) => {
res.render('index', { title });
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.