- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Nodejs 应用场景
Nodej s 应⽤场景
应⽤场景
和进程管理相关的 API 单独介绍起来⽐较枯燥,因此这⾥从⼀些典型的应⽤场 出
发,分别介绍⼀些重要 API 的使⽤⽅法。
如何获取命令⾏参数
在 NodeJS 中可以通过 process.argv 获取命令⾏参数。但是⽐较意外的是,node 执⾏程
序路径和主模块⽂件路径固定占据了 argv[0]和 argv[1]两个位置,⽽第⼀个命令⾏参
数从 argv[2]开始。为了让 argv 使⽤起来更加⾃然,可以按照以下⽅式处理。
function main(argv) {
// ...
}
main(process.argv .slice(2));
如何退出程序
通常⼀个程序做完所有事情后就正常退出了,这时程序的退出状态码为 0 。或者⼀个
程序运⾏时发⽣了异常后就挂了,这时程序的退出状态码不等于 0 。如果我们在代码
中捕获了某个异常,但是觉得程序不应该继续运⾏下去,需要⽴即退出,并且需要把
退出状态码设置为指定数字,⽐如1,就可以按照以下⽅式:
try {
// ...
} catch (err) {
// ...
process.exit(1);
}
如何控制输⼊输出
NodeJS 程序的标准输⼊流 (stdin )、⼀个标准输出流 (stdout )、⼀个标准错误流
(stderr )分别对应 process.stdin 、process.stdout 和 process.stderr ,第⼀个是只读数据
流,后边两个是只写数据流,对它们的操作按照对数据流的操作⽅式即可。例如,
console .log 可以按照以下⽅式实现。
function log() {
process.stdout.write(
util.format.apply(util arguments) + \n);
}
如何降权
在 Linux 系统下,我们知道需要使⽤ root 权限才能监听 1024 以下端⼜。但是⼀旦完
成端⼜监听后,继续让程序运⾏在 root 权限下存在安全隐患,因此最好能把权限降下
来。以下是这样⼀个例⼦。
http.createServer(callback).listen(80 function () {
var env = process.env
uid = parseInt(env[SUDO_UID] || process.getuid() 10)
gid = parseInt(env[SUDO_GID] || process.getgid() 10);
process.setgid(gid);
process.setuid(uid);
});
上例中有⼏点需要注意:
如果是通过 sudo 获取 root 权限的,运⾏程序的⽤户的 ID 和 GID 保存在环境变量
S DO_ ID 和 S DO_GID ⾥边。如果是通过 chmod +s ⽅式获取 root 权限的,运⾏程
序的⽤户的 ID 和 GID 可直接通过 process.getuid 和 process.getgid ⽅法获取。
process.setuid 和 process.setgid ⽅法只接受 number 类型的参数。
降权时必须先降 GID 再降 ID ,否则顺序反过来的话就没权限更改程序的 GID 了。
如何创建⼦进程
以下是⼀个创建 NodeJS ⼦进程的例⼦。
var child = child_process.spawn(node [ xxx .js ]);
child.stdout.on(data function (data) {
console.log(stdout: + data);
});
child.stderr.on(data function (data) {
console.log(stderr: + data);
});
child.on(close function (code) {
console.log(child process exited with code + code);
});
上例中使⽤了.spawn(exec args options)⽅法,该⽅法⽀持三个参数。第
文档评论(0)