在这里记录下nodejs各种小细节
ch3 Operating system and command-line integration
1. 吐槽
其实我们的nodejs并不是那么的跨平台
包括windows下的fs.filewatch触发两次,node-sass在windows下安装超级困难
某些包因为有node-gyp编译过程,导致在一个平台安装后在其他平台不能用
node-gyp是一个将c++代码编译成可供nodejs调用的二进制文件的node包
在linux下会使用gcc编译,windows下则是visual c++
2. 一些与runtime env有关的flag
- process.arch: 三个值:’arm’, ‘ia32’, or ‘x64’,代表32位/64位/arm系统结构
- process.memoryUsage(): 内存使用
- process.argv: 程序运行时传入的命令行参数
- process.cwd(): 程序运行时的目录
- process.env: 程序运行时的环境变量
- process.nextTick(callback[, arg][, …]): 将callback回调丢进Node下一个tick执行
- process.pid: 程序运行时的进程id
更多属性查看
3. 结束程序
一般来说我们的程序是用户终止or执行完毕之后自动结束
那我们想精确控制程序结束时机该怎么办呢
答案在 process.exit(arg)
这个函数上
其中arg - 0 : 正常退出,arg - 1 : 带有错误退出
arg由程序编写者指定
more code meanings
4. 进程间通信
如果对进程及进程间通信感到陌生,建议先google补充基础知识
先看一个例子:
nodejs对进程间的通信也描述成事件的形式
process本身也是一个EventEmitter对象
假设该程序的运行时的进程是:9999
在 unix like系统下,命令行运行kill -HUP 9999
就可以向node进程发送SIGHUP事件
当然我们也可以写在代码里:
不过windows下SIGHUP不能用代码而只能用cmd发送,也算是与我之前吐槽向呼应了把
tips: kill [sign] [pid] 并不是指这个进程将会被killed,而仅仅是发送signal给进程